网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
11月02日
漏签
0
天
c语言吧
关注:
800,812
贴子:
4,369,344
看贴
图片
吧主推荐
视频
游戏
1
2
3
下一页
尾页
97
回复贴,共
3
页
,跳到
页
确定
<<返回c语言吧
>0< 加载中...
随机数,从0-9999中取数,为什么0和9999出现次数差别这么大
只看楼主
收藏
回复
澈
毛蛋
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
澈
毛蛋
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
顶
2025-11-02 09:28:28
广告
不感兴趣
开通SVIP免广告
澈
毛蛋
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
顶再
澈
毛蛋
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
还顶
宇文nick
彩虹面包
13
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
100w次里差了41个 哪点儿大?
火柴人天秤
帕秋莉糕
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
一般来说 rand() 函数生成的随机数范围是 0 ~ 32767,可以认为是均匀分布。
使 rand() % 10000 == 0:那么 rand() 取0、10000、20000、30000。
使 rand() % 10000 == 9999:那么 rand() 取9999、19999、29999。
执行 1000000 次,前者的数学期望是 4 / 32768 * 1000000 = 122.0703,后者的数学期望是 3 / 32768 * 1000000 = 91.5527。
XeO2
小吧主
14
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
原因很简单,因为rand()的生成范围不是10000的整倍数,所以0和9999出现的概率本来就是不一样的,7L已经分析得很清楚了。
如果使用生成范围更大的随机数发生器,可以在一定程度上削弱概率的差异,但无法完全消除它,使用梅森旋转器的测试代码如下:
输出如下,显然64位的梅森旋转器产生的结果比32位的更均匀一些:
以下是生成指定范围内均匀分布随机数的算法,这种做法可以消除概率上的偏差:
其中d->random(d->engine)返回[0,4294967295]之间均匀分布的随机整数
澈
毛蛋
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
说误差不大,我没学过概率论的,好好看看这些大神的评论,真的牛逼
2025-11-02 09:22:28
广告
不感兴趣
开通SVIP免广告
朔墨
毛蛋
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
随机数一直有疑惑,今天真的受益
XeO2
小吧主
14
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
改了一个简单的版本,不需要<stddef.h>和<stdint.h>之类的头文件,在调用之前需要用srand初始化,然后直接调用random(0,9999)就可以:
汉莎
五十六号
超能力者
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
我的评价是,把RAND_MAX减去RAND_MAX对你的随机上界取模,随机结果比这个大就重新随机一次
巫女小姐
强能力者
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
哈哈,以前还没注意到这一点。其实也还好解决,把rand()为0那种情况排除掉可以了。
嗯了
低能力者
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
等概率好像可以用位操作
-将子山-
彩虹面包
13
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
不等概是不等概,你这误差不大就是误差不大,又不冲突
星座王
点亮12星座印记,
去领取
活动截止:2100-01-01
去徽章馆》
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示