由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 如果给随即函数rand[1,5] 如何产生rand[1,7] (转载)
相关主题
C++ rand()函数每次生成同一个数怎么在FreeBSD内核里面实现随机流函数
[求教,R, currying]函数编程20行代码,如何debug?[合集] 有人用过gasdev()产生随即数吗?求救!
c++产生随机数[合集] Linux/Unix下时间的精度 (转载)
[合集] C++如何产生很大范围的随机数?魏老师的方案
[合集] 为什么多个线程生成的随机数是一样的?好多人害怕锁
问一个C语言中整型和浮点运算的问题 (转载)我说老 bug,给个数据库模型大家学习学习
请教个C++程序设计阿里一线工程师来告诉你:当你在双十一剁手时,他们在干嘛
rand()的thread safety issue类似yelp这样的服务需要mongo做storage吗?
相关话题的讨论汇总
话题: rand话题: rand5话题: num话题: 5xrand话题: int
进入Programming版参与讨论
1 (共1页)
f**********8
发帖数: 2276
1
【 以下文字转载自 JobHunting 讨论区 】
发信人: foolsgarden8 (小兔子), 信区: JobHunting
标 题: 如果给随即函数rand[1,5] 如何产生rand[1,7]
发信站: BBS 未名空间站 (Tue Jun 8 00:51:44 2010, 美东)
int rand7()
{
while (1)
{
int num = 5*(rand5() -1) + rand5()- 1;
if (num < 21) return num % 7;
}
}
谁能解释一下这个解答?看不懂
z****e
发帖数: 2024
2
构造一个5×5的概率空间,等概率产生25个事件,前面21个可以构造被7整除的等概率
事件数。
超过21就不算重来。
l******e
发帖数: 12192
3
你再算算?呵呵
N***m
发帖数: 4460
4
ft, i have deleted it

【在 l******e 的大作中提到】
: 你再算算?呵呵
N***m
发帖数: 4460
5
因为我发现对于奇数p,(2x+1)%p for x=0,1,2,...,p-1是x的乱序。
我就想有没有更有效或者简洁的办法?

【在 l******e 的大作中提到】
: 你再算算?呵呵
X****r
发帖数: 3557
6
从1-n的随机数产生1-m的随机数,前者的概率空间的“粒度”是1/n^k,
所以除非存在整数k和a使n^k=am,不然就必然要扔掉一些数。对于给定
的n和m,一种比较有效率(就有效利用原来的随机数而言)的方法是找
一对整数b,k使m^b(在比例上)接近但不超过n^k,每b个输入如果落在
m^b之内的话就产生k个输出,不然从新取。这样每个输出平均就只需要
(k*n^k)/(b*m^b)个输入。
当然以上假设输入输出都是独立均匀分布的。如果输出不需要独立均匀分
布的话就随便了。

【在 N***m 的大作中提到】
: 因为我发现对于奇数p,(2x+1)%p for x=0,1,2,...,p-1是x的乱序。
: 我就想有没有更有效或者简洁的办法?

N***m
发帖数: 4460
7
受教了~~

【在 X****r 的大作中提到】
: 从1-n的随机数产生1-m的随机数,前者的概率空间的“粒度”是1/n^k,
: 所以除非存在整数k和a使n^k=am,不然就必然要扔掉一些数。对于给定
: 的n和m,一种比较有效率(就有效利用原来的随机数而言)的方法是找
: 一对整数b,k使m^b(在比例上)接近但不超过n^k,每b个输入如果落在
: m^b之内的话就产生k个输出,不然从新取。这样每个输出平均就只需要
: (k*n^k)/(b*m^b)个输入。
: 当然以上假设输入输出都是独立均匀分布的。如果输出不需要独立均匀分
: 布的话就随便了。

z****e
发帖数: 2024
8
红猪侠下午好啊。

【在 X****r 的大作中提到】
: 从1-n的随机数产生1-m的随机数,前者的概率空间的“粒度”是1/n^k,
: 所以除非存在整数k和a使n^k=am,不然就必然要扔掉一些数。对于给定
: 的n和m,一种比较有效率(就有效利用原来的随机数而言)的方法是找
: 一对整数b,k使m^b(在比例上)接近但不超过n^k,每b个输入如果落在
: m^b之内的话就产生k个输出,不然从新取。这样每个输出平均就只需要
: (k*n^k)/(b*m^b)个输入。
: 当然以上假设输入输出都是独立均匀分布的。如果输出不需要独立均匀分
: 布的话就随便了。

X****r
发帖数: 3557
9
你这个不是均匀分布的。比如出7的机率才1/25。
X****r
发帖数: 3557
10
中午好。

【在 z****e 的大作中提到】
: 红猪侠下午好啊。
相关主题
问一个C语言中整型和浮点运算的问题 (转载)怎么在FreeBSD内核里面实现随机流函数
请教个C++程序设计[合集] 有人用过gasdev()产生随即数吗?求救!
rand()的thread safety issue[合集] Linux/Unix下时间的精度 (转载)
进入Programming版参与讨论
z****e
发帖数: 2024
11
咱俩应该都反过来问候对方。
呵呵。

【在 X****r 的大作中提到】
: 中午好。
d****e
发帖数: 251
12
明白了,以前碰到过类似的情况(double precision的空间),现在都忘了。
不过原题还是有个小问题,目标区域是[1,7]。

【在 X****r 的大作中提到】
: 你这个不是均匀分布的。比如出7的机率才1/25。
B*******g
发帖数: 1593
13
int num = 5*(rand5() -1) + rand5()- 1;

int num = 5*rand5() - rand5();是否一样啊?
t****t
发帖数: 6806
14
你把上面那个式子展开能得到下面那个吗?

【在 B*******g 的大作中提到】
: int num = 5*(rand5() -1) + rand5()- 1;
: 和
: int num = 5*rand5() - rand5();是否一样啊?

d****p
发帖数: 685
15
5X(rand()-1)+rand()-1
= 5Xrand() + (rand() -6)
= 5Xrand() + X where X in [-1, -5]
= 5Xrand() + (-rand())

【在 t****t 的大作中提到】
: 你把上面那个式子展开能得到下面那个吗?
z****e
发帖数: 2024
16
好眼力。

【在 d****p 的大作中提到】
: 5X(rand()-1)+rand()-1
: = 5Xrand() + (rand() -6)
: = 5Xrand() + X where X in [-1, -5]
: = 5Xrand() + (-rand())

1 (共1页)
进入Programming版参与讨论
相关主题
类似yelp这样的服务需要mongo做storage吗?[合集] 为什么多个线程生成的随机数是一样的?
如果用scrum做sprint plan,怎么确定user story和task?问一个C语言中整型和浮点运算的问题 (转载)
python: 可以用map计算数列之间的差额吗?请教个C++程序设计
大家有讨论 王垠新博文《未来计划》吗?rand()的thread safety issue
C++ rand()函数每次生成同一个数怎么在FreeBSD内核里面实现随机流函数
[求教,R, currying]函数编程20行代码,如何debug?[合集] 有人用过gasdev()产生随即数吗?求救!
c++产生随机数[合集] Linux/Unix下时间的精度 (转载)
[合集] C++如何产生很大范围的随机数?魏老师的方案
相关话题的讨论汇总
话题: rand话题: rand5话题: num话题: 5xrand话题: int