我知道这里有很多关于随机的问题,但它们根本没有帮助我,它们是关于在一个运行时生成相同的数字,而我的不是
所以这是我的代码。
Random rnd = new Random(0);
for (int c = 0; c < arraySize; c++)
data[c] = rnd.Next();
如果我是第一次运行它
rnd.Next()的元素是1559595546
下一个输出将是1755192844
等等,
如果我关闭程序并重新运行它,
将生成相同的数字集
data[0] = 1559595546
data[1] = 1755192844
and so on,
为什么会这样?每次关闭程序并运行它时,它不应该生成不同的数字集吗?
请帮助我理解这一点。
答案 0 :(得分:7)
不,您提供的固定种子为0.因此输出始终相同。阅读您正在使用的构造函数重载的文档:
http://msdn.microsoft.com/en-us/library/ctssatww%28v=vs.110%29.aspx
特别注意以下声明:
为不同的Random对象提供相同的种子值会导致每个实例产生相同的随机数序列。
也许你应该:
var rnd = new Random(); //no seed
答案 1 :(得分:0)
这是因为你提供了种子0喜欢
Random = new Random(0); //0 is Seed
如果删除它,它将根据您的需要生成不同的随机数。