请问如何将rand()函数结果值再分配比例 请问rand()函数结果值出现的比例问题 假设我们的rand()函数的范围是1到100现在我想让其中的一个数值(比如5)出现的概率为10%请问应该怎么写 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 $n = rand(1,110);if ($n>100) {$n=5;} //改一下江南昆虫的代码, 这样, 可以令到所有数字都增加10%的出现机率$n = rand(1,110);if ($n>100) {$n = $n - 10;} 一楼的是错的,我改正了。因为1-100中本身就包含个5$n = rand(1,119); if ($n>100) {$n=5;} 写错了,应该是109一楼的是错的,我改正了。因为1-100中本身就包含个5 $n = rand(1,109); if ($n>100) {$n=5;} 我在想,為什麼不是$n = rand(1,100);if($n >90) $n = 5; 為什麼是無用功$n 是 1 - 100的隨機數那麼$n > 90就是占了 10% 的區域那麼 $n 就有 10% 的機會等於5 为什么1楼的jnkc发了言就飘然而去。。留下我一个人独自。给他的code做注释。注释1:为什么1楼的是正确的? rand(1,110),每个数平均出现, 每个数出现概率是1/110 其中101-110=〉5, 5=〉5, 不错,11个可能是出现5, 所以 11/110 = 10%注释2:为什么9楼不对? 见注释1注释3:7楼的是什么意思? 嗯,“令到所有数字都增加10%的出现机率”,这个是不可能的。 因为。。一个随机事件中,各个可能结果的概率的和必为1,如果原来1-100,每个出现的概率为1%,每个都增加10%。(还不懂的请复习/学习《概率论》相关书籍)注释4:那么13楼的不对吗? 这个,从楼主的描述来看,13楼几乎就是对的了 如果改为 $n = rand(1,100); if($n >91) $n = 5; 那么, 5出现的可能是10/100=10% 那么,怎么出现了两个正确答案??!! 还有其它答案吗?有 $n = rand(1,100); if($n=10) $n = 5; 也对。依此类推 原因是楼主只要求5出现的概率上升到10%,没规定其它数的概率作何变化。 因为各个结果概率和为1, 5的概率上升,必然导致其它(所有或部分)数出现概率下降。 那么1楼的是在5上升到10%的同时,其它所有数(1-100,除去5)的概率同等下降到1/110 而13楼的是在5上升到10%的同时,1-91的概率不变,为1%,而92到100的概率下降到0.希望大家完全懂了.....当然,我相信1楼是更符合楼主的想法的真正的正解 更正:上面回复中 if($n=10) $n = 5; 应改为 if($n<=10) $n = 5; 不是rand(1,119); 概率10%的话是是rand(1,100);取任意的x1-(x+1)0例如:$n=rand(1,100);if ($n>90) {$n=5;} 假设我们的rand()函数的范围是1到100 就是说1到100都应该有机会取到。现在我想让其中的一个数值(比如5)出现的概率为10%没有特殊说明也就是1到100中除了5以外的99个数字机会均等,合起来的概率是90%99/0.9=110,rand(1,110)取到超出1-100范围的的数字就得看成是5,取到1-100范围内的话那就是取到什么就算什么,所以5的概率是(1+(110-100))/110=11/110=10%其实楼主的问题用到的php知识就是rand和if,剩下的是小学语文的理解力,小学数学的分子分母。当然对于知道5的概率为10%的情况下还强求其他99个数字每个要保持1%概率的,我就不知道该归结为生活常识还是大学概率论了。 从此帖看来, 无论是否影响其它数的概率, rand()只能取一个数,其它数的概率就可以忽略掉, 所以一楼正确。 {dede:arclist 标签不能获取文章? thinkphp一个新手问题 php代码,echo简单错误,向前辈请教。 高分求飞信网页网站源码 本月时间问题 关于排序问题!! php的mysqli部分的语法问题 mysql中SELECT语句的问题 ====我想进托普,谁能帮帮忙吗===== 各位帮我看看 为什么不能添加更新信息 谢谢啊~~~~ 求vn700等各大高手!求助PHP正则! 求PHP时间比较方法(注:只比较小时,不理会分秒的)
if ($n>100) {$n=5;}
$n = rand(1,110);
if ($n>100) {$n = $n - 10;}
if ($n>100) {$n=5;}
$n = rand(1,100);
if($n >90) $n = 5;
為什麼是無用功$n 是 1 - 100的隨機數
那麼$n > 90就是占了 10% 的區域
那麼 $n 就有 10% 的機會等於5
rand(1,110),每个数平均出现, 每个数出现概率是1/110
其中101-110=〉5, 5=〉5, 不错,11个可能是出现5, 所以 11/110 = 10%注释2:为什么9楼不对? 见注释1注释3:7楼的是什么意思?
嗯,“令到所有数字都增加10%的出现机率”,这个是不可能的。
因为。。一个随机事件中,各个可能结果的概率的和必为1,如果原来1-100,每个出现的概率为1%,每个都增加10%。(还不懂的请复习/学习《概率论》相关书籍)注释4:那么13楼的不对吗?
这个,从楼主的描述来看,13楼几乎就是对的了
如果改为
$n = rand(1,100);
if($n >91) $n = 5;
那么, 5出现的可能是10/100=10% 那么,怎么出现了两个正确答案??!!
还有其它答案吗?有
$n = rand(1,100);
if($n=10) $n = 5; 也对。依此类推 原因是楼主只要求5出现的概率上升到10%,没规定其它数的概率作何变化。
因为各个结果概率和为1, 5的概率上升,必然导致其它(所有或部分)数出现概率下降。 那么1楼的是在5上升到10%的同时,其它所有数(1-100,除去5)的概率同等下降到1/110
而13楼的是在5上升到10%的同时,1-91的概率不变,为1%,而92到100的概率下降到0.希望大家完全懂了.....当然,我相信1楼是更符合楼主的想法的真正的正解
例如:
$n=rand(1,100);
if ($n>90) {$n=5;}
就是说1到100都应该有机会取到。现在我想让其中的一个数值(比如5)出现的概率为10%
没有特殊说明也就是1到100中除了5以外的99个数字机会均等,合起来的概率是90%
99/0.9=110,rand(1,110)取到超出1-100范围的的数字就得看成是5,取到1-100范围内的话那就是取到什么就算什么,所以5的概率是(1+(110-100))/110=11/110=10%其实楼主的问题用到的php知识就是rand和if,剩下的是小学语文的理解力,小学数学的分子分母。
当然对于知道5的概率为10%的情况下还强求其他99个数字每个要保持1%概率的,我就不知道该归结为生活常识还是大学概率论了。
从此帖看来, 无论是否影响其它数的概率, rand()只能取一个数,其它数的概率就可以忽略掉, 所以一楼正确。