Ho provato questo programma con libstdC++, libC++ e Dinkumware:uscita a caso diverso tra le implementazioni
#include <iostream>
#include <algorithm>
#include <vector>
#include <random>
#include <functional>
#include <limits>
int main()
{
std::vector<int> v(10);
std::mt19937 rand{0};
std::uniform_int_distribution<> dist(
1, 10
);
std::generate_n(v.begin(), v.size(),
std::bind(dist, rand));
for (auto i : v)
std::cout << i << " ";
}
uscita rispettivamente è:
6 6 8 9 7 9 6 9 5 7
6 1 4 4 8 10 4 6 3 5
5 10 4 1 4 10 8 4 8 4
L'uscita è costante per ogni esecuzione, ma, come si può vedi, sono diversi. Spiegare?
Perché ci si aspetta implementazioni diffrenti di * generazione di numeri casuali * per produrre valori uguali? – lisyarus
Spiegare * cosa *? Coerenza tra le corse? O incoerenza tra le implementazioni?Diverse implementazioni sono autorizzate a produrre sequenze pseudo-casuali diverse dallo stesso seme. Questo è esattamente ciò che hai osservato. – AnT
Lo stesso algoritmo dovrebbe produrre gli stessi valori dati lo stesso seme, non dovrebbe? I tuoi argomenti non hanno senso. – user5368921