Nein, nein, nein.
Sie können nicht Variablenadressen, Werte von nicht initialisierten Variablen und dergleichen als Quellen von Zufallszahlen.
Einige dieser Anwendungen werden Sie verdienen ein Ticket direkt auf „undefiniert Verhalten Land“, wo Ihr Compiler schrecklich, erlaubt ist schrecklich Dinge, um Ihren Code zu tun.
Einige sind nur nicht wirklich all das zufällig.
Wenn Sie Zufallszahlen möchten, verwenden, was in < random vorgesehen ist> und stellen Sie sicher, dass Sie Ihren Generator richtig Samen, wenn Sie nicht random_device
direkt verwenden (was Sie wahrscheinlich für Nicht-Krypto sichere Zahlen nicht wollen).
Und nicht einmal rand()
betrachten - vergessen sie existiert. Es ist furchtbar.
sollten Sie eine std::seed_seq
verwenden mehrere Entropie Quellen zu mischen und dann, dass der Generator auf Saatgut verwenden. Unter der Adresse einer Variablen als eines von vielen Eingängen für seed_seq
wäre ok, vorausgesetzt, Sie auch andere Quellen von höherer Qualität (insbesondere std::random_device
) umfassen.
es ist nicht UB, aber was ist der Grad der Zufälligkeit? Wer garantiert es? –
Die Antwort für einen Titel: Nein. Gibt es UB? Ja, da der Wert, den Sie erhalten, nicht definiert ist. Es könnte sehr gut immer 133 sein. –
Ich bin nicht derzeiger der Zeiger. – user1095108