我知道Rand()用于生成小于1且大于0的随机数。
如果提供种子,则每次执行时都会在同一连接中为同一种子生成相同的值。
同样select RAND(1),RAND()
每次在同一连接中执行时都会给你相同的结果集。
但种子有用吗?
答案 0 :(得分:3)
它有点隐含,但记录良好here:
具有相同种子值的RAND()的重复调用返回相同的结果。
对于一个连接,如果使用指定的种子值调用RAND(),所有后续的RAND()调用都会根据种子RAND()调用生成结果。例如,以下查询将始终返回相同的数字序列。
SELECT RAND(100), RAND(), RAND()
因此,SELECT RAND(1), RAND()
将返回相同的数字,而SELECT RAND(), RAND()
将赢得
答案 1 :(得分:2)
一组数字已经随机生成一次,但在每次调用时保持不变,在需要共享此特定集的情况下非常有用。换句话说,种子确定地映射到一组正态分布的数字;如果种子的所有用户使用相同的PRNG,他们将接收相同(无限)的伪随机数集,而无需进一步同步。
一个示例用例:“这是一张随机洗牌的牌组,看看你的AI能够在多次与同一牌组比赛中发挥作用。”
或者“对于这次Minecraft比赛,你将使用种子#123456789生成的世界,用它做一些很棒的事情。”
另见:http://rednuht.org/genetic_cars_2/有一个“种子”字段,它将生成相同的轨道集,这对于测试同一地形上的各种种群非常有用。在这里,您可以以交互方式查看共享种子的效果。