学员(7867)
课程(196)
分享
老师,我在学C#编程初级,有个问题请教一下
关于这个掷骰子的题目,我发现把构建新的random放在for循环里面是,生成的随机数都是连续的:
而如果把构建放在外面的话,生成的是随机的
关于这一点很不明白,这是为什么呢?
这个是因为随机数的生成需要有一个种子生成,由一个种子生成的数字是随机的,这个种子就是当前时间,当new Random的时候,会根据当前时间确定种子,但是你每次循环都是new的,每次种子都不一样,所以最后的结果也不是随机的
这个种子是,保证随机数算法生成的数字是随机的一个保证
最后两句话不是很理解。。是否可以这样理解:生成随机数的机制是由种子根据时间的流逝来产生不同的随机数的,所以放在for循环里,每次都生成新的种子。而相近的几次循环因为执行的时间很近的缘故,所以种子在随机开始的时候初始值都很接近?不知道这样理解对不对
回复 @ Jarchi: 你可以这样认为,如果是同一个种子生成的数那就是随机的, 不同种子生成的随机数 就不是随机的
回复 @ Jarchi: 你理解的也差不多
回复 @ siki: 好的,谢谢老师
回复 @ Jarchi: 不客气