新大主宰满级v无限元宝:VB随机数问题 int(rnd()*x)+y

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/28 16:35:28
VB随机数问题

在int(rnd()*3)基础上如何改动,使得在0~3范围内可能得到的结果为(只能得到0)(0或1)(0或2)(只能得到1)(1或2)(2)(2或3)(3)(1或2或3)

我的一个想法是int(rnd()*3)+n,当n=0时,在0~3范围内可以得到(0或1或2) 当n=1(1或2) 当n=2 (只能得到2) 当n=-1(0或1) 当n=-2(只能得到0) 但是问题也出来了,当n=?时,可以得到(1)和(0,2)

只要是int(rnd()*x)+y这种形势就可以,谢谢了
(x&y可以是一函数)
我的表达对于语文不好的人理解起来可能确实有点问题,换一个问法:当t=rnd()时,t为{0~1}之间的一个随机数。

对上式修改后(仍然只能用一次随机函数)
可否使得t为{0~0.4&0.6~1}之间的一个随机数

是这样,

int(rnd() * x) + y 的结果范围是从 y 到 x + y - 1。

如果 int(rnd() * 3) + 0,范围就是 0 到 3 + 0 - 1 = 2。即 [0, 2)
如果 int(rnd() * 3) + 1,范围就是 1 到 3 + 1 - 1 = 3。即 [1, 3)

第一:int(rnd()*3)+n,当n=2的时候,你确定只能得到2?我觉得不是啊
第二:只能得到一的话,int(int(rnd()*3)/3)+1,只能得1
第三:得到(0,2)的话,照着上面那个来
第四: 不要学了计算机和英文把语文忘了,表达能力有待提高,看你的问题很累,也许我还理解错了......

t=rnd();
if t>0.4 and t<0.5 then
t=4*(t-0.4) //把0.4-0.5转化到0-0.4
if t>=0.5 and t<0.6 then
t=4*(t-0.5)+0.6 //把0.5-0.6转化到0.6-1

这样应该不会影响到概率