方法一:生成两个(1,5)的随机数,这样一共是25种情况,注意这两个数是有顺序的,从这25种情况中,取前21种,每三种代表(1,7)中的一个数字,如果取到的是这21种以外的情况,丢掉重新取。 方法二:生成三个(1,5)的随机数,分别表示一个二进制位,其中1和2映射为0,3跳过,4和5映射为1。这样产生的三位二进制...
(给定一个随机数生成器,这个生成器能均匀生成1到5(1,5)的随机数,如何使用这个生成器生成均匀分布的1到7(1,7)的数?) 解法一: 拒绝采样定理 简单的说, 把 1-5 的随机数发生器用两次, 拼成一个5进制的数, 就是1-25. 将这 1-25 平均分配的25种情况映射到7种情况上, 问题就解决了. 因为21是7的倍...
如果函数f()生成随机数的范围是[1,5],即大于等于1和小于等于5范围的随机数,则要生成[1,7]的随机数,或者说f()是[a,b]范围的随机数要生成[c,d]范围的随机数的方法是:((f()-a)/(b-a))*(d-c)+c,本例a=1,b=5,c=1,d=7 f()-a的随机数范围是[0,b-a],本例是[0,4]...
import random # 原有生成1-5随机数的函数 def random_5(): return random.randint(1, 5) # 要获得的生成1~7随机数的函数 def random_7(): while True: # 避免没有返回值 n = (random_5()-1)*5 + random_5()-1 # 生成0~24的随机数 if n <= 20: return n % 7 + 1 if __name__...
有个方法很直观,反复调用“大”随机数生成器,直到满足条件即可。例如,我有 rand5,想生成 rand3 注...
其实从大的随机数生成小的随机数是简单的,一般面试会反过来,从小的随机数生成大的,会稍微复杂一点点...
C语言编程入门-S078:生成10个1到6的随机数-《刚哥伴读会》对C语言感兴趣的伙伴,加入刚哥的伴读会,刚哥带你。, 视频播放量 2995、弹幕量 0、点赞数 62、投硬币枚数 4、收藏人数 34、转发人数 9, 视频作者 刚哥伴读会, 作者简介 ——《刚哥伴读会》兴趣使然,学以富强!【
比如我们用rand(2)去生成rand(5),每次相当于会进行一部分的丢弃,我们可以看到2^7和5^3比较接近,...
1、1~5随机函数 publicstaticintsourceFunc() {return(int) (Math.random() * 5) + 1; } 2、将原函数转化为[0,1]返回值的函数 publicstaticinttmpFunc() {inti =sourceFunc();if(i < 3) {return0; }elseif(i > 3) {return1; }else{returntmpFunc(); ...