gpt4 book ai didi

MySQL RAND() 种子值几乎重复

转载 作者:行者123 更新时间:2023-11-29 03:48:12 25 4
gpt4 key购买 nike

在 Windows 7 上使用 MySQL 5.6.21。

我正在尝试从按日期播种的表中返回一个“随机”行(因此同一行返回当天,然后在第二天切换等 - 如果您愿意,可以使用“当天的随机报价” ).

我注意到相同的行不断出现,所以我将查询简化为它的基础,看起来 RAND() 函数每四个种子值生成非常相似的数字。当四舍五入为整数时,这些值似乎每四个种子重复一次。此示例仅使用 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;

给...

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

不是我所期望的,所以我做错了什么?我期望生成一个伪随机序列。

最佳答案

根据文档,RAND(n) 只有在 n 为常量时才能正常工作。 使用非常量参数的效果是不确定的。从 MySQL 5.0.13 开始,不允许使用非常量参数。

正如他们所说,RAND() 并不是一个完美的随机生成器。这是一种按需生成随机数的快速方法,可在同一 MySQL 版本的平台之间移植。

MySQL documentation

检查如果使用不带参数的 RAND() 会发生什么情况。

关于MySQL RAND() 种子值几乎重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27187207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com