在 Windows 7 上使用 MySQL 5.6.21。
我试图从按日期播种的表中返回“随机”行(因此同一行返回当天,然后切换第二天等 - 如果您愿意,可以是“当天生成器的随机引用”)。
我注意到相同的行不断出现,因此我将查询简化为基础,看来 RAND() 函数生成very每四个种子值都有相似的数字。当四舍五入为整数时,这些值似乎每四个种子重复一次。此示例仅使用 16 行,但您已经明白了。
create table t (i INT);
insert into t values(0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15);
select i, ceil(rand(i) * 16), rand(i) from t;
drop table t;
Gives...
0 3 0.15522042769493574
1 7 0.40540353712197724
2 11 0.6555866465490187
3 15 0.9057697559760601
4 3 0.15595286540310166
5 7 0.40613597483014313
6 11 0.6563190842571847
7 15 0.9065021936842261
8 3 0.15668530311126755
9 7 0.406868412538309
10 11 0.6570515219653505
11 15 0.907234631392392
12 3 0.15741774081943347
13 7 0.40760085024647497
14 11 0.6577839596735164
15 15 0.9079670691005579
不是我所期望的,那么我做错了什么?我期望生成一个伪随机序列。