xcode random number generator
Baue ich eine app, die zeigt, dass eine zufällige facebook-Profil Bild, aber nicht wissen, wie man die Profil-id eine Zufallszahl. Ich kann es natürlich ändern, es zufällig in den code, aber es brauchen, um zufällig zu sein. Es ist die zweite NSString nach unten, dass ich brauche, um zufällig zu sein. Jede Hilfe wäre sehr geschätzt werden!
- (IBAction) nextImagePush {
NSString *prefix = @"http://graph.facebook.com/";
NSString *profileId = @"517418970";
NSString *suffix = @"/picture?type=large";
NSString* url= [NSString stringWithFormat:@"%@%@%@", prefix, profileId, suffix];
UIImage *img = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:url]]];
[imageView setImage:img];
Wenn ich helfen Sie Sie ausschließen, meine Profil-ID in Ihrer Anwendung?
Warum würden Sie möglicherweise möchten dies tun?
Warum würden Sie möglicherweise möchten dies tun?
InformationsquelleAutor Harry Hall | 2011-10-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
NSLog Ausgabe:
Aktualisiert
arc4random_uniform
.Für eine unvoreingenommene ganze Zahl innerhalb eines Bereichs:
NSLog Ausgabe:
Mit SecRandomCopyBytes erfordern wird, einschließlich der header-Datei:
und Rahmen:
Besser noch für Versionen oder OS X >= 10.7 oder iOS >= 4.3 Einsatz
arc4random_uniform
Das funktioniert perfekt, ich danke Ihnen so sehr!
-1. Verwenden Sie niemals arc4random (), es sei denn, Sie verstehen die Vorbehalte (namentlich dokumentiert, als thread-unsicher, es sei denn, Sie haben Ihre eigenen sperren, so ist es in der Regel zu unsicher für Einsatz in der library code). Der Rückgabetyp ist auch
u_int32_t
weshalb scheint es zu geben, negative zahlen, wenn die Formatierung mit "%d", (noch wichtiger ist, ein Undefiniertes Verhalten), und der Aufrufabs()
streng Ergebnisse zu undefiniertem Verhalten zu.Von Mann: rand_r() "mit dieser Funktion wird ein schwaches pseudo-random-generator", und es hängt von einem zufälligen seed, sollte es nicht verwendet werden. SecRandomCopyBytes() ist eine ausgezeichnete Wahl, ist es thread-sicher? Der Mersenne Twister und RC4 sind eigentlich auch über diese Frage hinaus/Nutzung und die thread-Sicherheit hängt von der bestimmten Implementierung.
SecRandomCopyBytes()
fast sicher die falsche Sache zu verwenden, auch hier (Seit Wann gibt es die Auswahl "random" facebook-Profil verlangen einen sicheren Zufallszahlengenerator?), und sein viel langsamer, und Lesen von beliebigen bytes in ein uint32_t könnte Undefiniertes Verhalten, und es ist noch nicht sicher-format ein u_int32_t mit %d, und wird wahrscheinlich geben eine Warnung in Zukunft Compilern (könnte es bereits geben, eine Warnung mit dem Clang-frontend).InformationsquelleAutor zaph
generieren von Zufallszahlen in einem festen Intervall, das Sie verwenden können, arc4random()%x ist.
x steht für die maximale Anzahl Sie erhalten möchten.
Natürlich gibt es andere Wege, aber dieser funktioniert Super.
InformationsquelleAutor NightCoder
Es ist einfach, wählen eine zufällige ganze Zahl mit einer Funktion wie
rand(3)
,random(3)
, oderarc4random(3)
und verwenden Sie dann+[NSString stringWithFormat:]
zu drehen, die in eine Zeichenfolge mit der%u
Formatbezeichner.Was viel schwieriger ist es, zu gewährleisten, dass die ganze Zahl, die Sie wählen, entspricht einem gültig Facebook-Benutzer-ID:
Wenn die Antwort auf alle diese Fragen "ja" ist, dann kann man es tun, ansonsten ist es nahezu unmöglich, es sei denn Facebook bietet eine API für das, was Sie wollen, und das halte ich für unwahrscheinlich.
Wie könnte ich es so machen, dass wenn die zurückgegebene Zahl bedeutet haben -, bevor es, diese Zahl wird übersprungen, bis ein ohne - generiert wird?
Verwenden Sie niemals rand() oder random(), verwenden Sie immer arc4random().
Ja ive verwendet code, den Sie gab, aber so ziemlich die Hälfte der zahlen negativ sind, ist es ein Weg, um Ihnen nur positive zahlen?
Verwenden Sie die
%u
angegebenen format formatieren Sie es als ein unsigned integer statt einer Ganzzahl.InformationsquelleAutor Adam Rosenfield