首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

rand1 生成 rand9

给定一个函数 rand1 会 50% 概率输出 0 和 1,请利用 rand1 实现 rand9,等概率地输出 0~9 这 10 个数字。 2.难度级别 难度应该是 middle。...3.解决思路 从题目来看,有个已知条件,rand1() 会 50% 概率输出 0 和 1,在已知条件基础上实现一个新函数 rand9(),所以相当于基于 50% 概率发生器创建一个 10% 概率发生器...怎么创建一个 10% 事件发生器呢,我们从公式可知,rand1 产生事件概率 P(0)=50%,P(1)=50%,那么 rand1 执行两次,也就是两次结果都是 1 概率为 25%,三次结果都是 1...概率为 12.5%,四次执行都为1概率为 6.25%,相当于四次产生 1111 组合概率为6.25%,也就是 1/16。...所以该问题解法是拒绝采样法:调用 4 次 rand1,生成 4 位二进制数,然后再转换成 10 进制数,如果这个数大于 9,再重新生成即可。 4.实现示例 下面使用 Golang 给出实现示例。

56310
您找到你想要的搜索结果了吗?
是的
没有找到

rand()函数用法

大家好,又见面了,我是你们朋友全栈君。 C++中rand() 函数用法 1、rand()不需要参数,它会返回一个从0到最大随机数任意整数,最大随机数大小通常是固定一个大整数。...(int)round(1.0rand()/RAND_MAX(b-a+1)+a) 6、若要产生01之间小数,则可以先取得010整数,然后均除以10即可得到“随机到十分位”10个随机小数。...7、通常rand()产生随机数在每次运行时候都是与上一次相同,这样是为了便于程序调试。...,所以有一定范围里可看成是随机rand() 会返回一随机数值,范围在 0 至 RAND_MAX 间。...返回值: 返回 0 至 RAND_MAX 之间随机整数值,RAND_MAX 范围最少是在 32767 之间(int),即双字节(16位数)。

1.6K10

讨论rand和mt_rand区别之前,请先确定PHP版本

php生成指定返回随机数在日常中肯定是经常用到。在php7.1之前,rand和mt_rand是有一定区别的。 ? php7.1以下,一般推荐使用mt_rand生成随机数。...rand使用是单一随机种子,因此可以通过随机数连续输出计算出随机种子,并推测出下一个随机数结果。 mt_rand使用了更好算法生成随机数。...php7.1之后rand内部实现: PHP_FUNCTION(rand) { zend_long min; zend_long max; int argc = ZEND_NUM_ARGS...(min, max)); } 从上面的源码可以看出,在php7.1之后,rand,和mt_rand内容实现内容是一样,除了mt_rand 会对最大值小于最小值情况抛出警告信息。...rand会转换成正确大小输出。 下次再被问到rand,和mt_rand区别,请先确认php版本。

1K10

rand(5)生成rand(7),从r

我们先来看这样一个问题, 已知rand5能等概率产生1, 2, 3, 4, 5, 现要用rand5来实现rand7(rand7意思是要等概率产生1, 2, 3, 4, 5, 6, 7), 该怎么搞呢...所以, 在文本中, 我也来凑凑热闹, 看看该如何下手, 并给出程序实际验证结果。         我们看看rand5 + rand5 行不行。 ...rand5 + rand5 结果是2, 3, 4, 5, 6, 7, 8, 9, 10, 稍微思考一下, 就知道, 这些数肯定不是等概率, 比如2概率要低于5概率。 所以, 不靠谱。...所以, 我们先要让rand5产生等概率间距数组(比如上述10, 20, 30, 40, 50,), 然后让rand5产生连续待插入数字(比如上述0, 1, 2, ..., 9,)....() { return myRandom(5); } // 仅由rand5来构造rand7 int rand7() { while(1) { // 构造等概率0, 1, 2, 3, 4,

1.8K10

PHP随机数函数rand()与mt_rand()讲解

PHP中rand()与mt_rand()都是用于产生一个指定范围内单独随机数函数,如果需要产生多个不重复随机数,请参考:PHP生成指定范围内N个不重复随机数。...rand() 函数默认使用 libc 随机数发生器,很多老 libc 随机数发生器具有一些不确定和未知特性而且效率很低;mt_rand() 则是用了 Mersenne Twister 中已知特性作为随机数发生器...,它产生随机数值平均速度比 libc 提供 rand() 快四倍。...所以在PHP中mt_rand()函数是非正式用来替换rand()。 语法: rand(min,max) mt_rand(min,max) min,max 皆为可选,规定随机数产生范围。...例如,想要 1 到 100(包括 1 和 100)之间随机数,用 rand(1, 100) 或 mt_rand(1,100)。

3.3K30

rand()随机效率问题

在平时开发过程中,数据量不超过1W条,通常执行随机查询是通过对order进行rand操作进行。但是随着数据量增加,rand严重制约了整站访问速度。 这是什么原因造成呢?...mysql官方说话是rand函数在order中会被反复扫描多次,造成性能急剧下降。...网友解决办法最多就是通过对min和max之间ID进行随机,这样就存在一个问题,如果是自增主键,那么某条数据被删除,那么就可能随机到一条已经被删除内容,展现出来时候就达不到预期效果。...使用array_rand函数随机产生需要键名,再通过键名去查询数据库。这样通过有限查询获得100%存在数据。...} $ar=array_rand($arr,$num);//随机元素键名 return $ar;

64110

C-Rand学习

函数概念 rand()函数–C语言中用来产生随机数函数。 rand()函数界限–随机产生一个0-0x7fff数,即最大是32767。...rand()函数原型–int rand(void); 函数调用 rand()函数 rand()函数需要头文件是: 调用rand()函数前都会查询是否调用了函数srand(send...使用rand()函数产生1-100以内随机整数:int number1 = rand() % 100+1; srand()函数 srand()函数需要头文件仍然是: srand...还有另外一种初始化种子方式如下,用进程pid作为种子值seed,在同一个程序中,这样种子值是相同 srand((unsigned int)getpid()) 使用方法 ## 使用rand()和...srand()产生指定范围内随机整数方法 采用模除+加法方法 因为对任意整有 0<rand() % (n-m+1) <= n-m+1 所以也存在 0+m<rand() % (n-m+1) +m

74220

MySQL随机函数RAND

set i=i+1; end while; end;; delimiter ; call idata(); 如何随机取3个单词 select word from words order by rand...() limit 3; -- 查看上面语句执行情况 explain select word from words order by rand() limit 3; Extra中Using temporary...从word表中,按照主键顺序取出所有的word值,对于每一个word值,调用rand函数生成一个大于0小于1随机小数,把该随机小数和word值存入临时表R和W字段中,至此扫描行数是10000 临时表目前有...optimizer_trace,只对本线程有效 */ SET optimizer_trace='enabled=on'; /* 执行语句 */ select word from words order by rand...peak_memory_used代表排序时使用到内存,按道理应该等于sort_buffer_size指定值,之所以不等原因是作者本人MySQL是8.0.12版本。

2.5K10

随机函数:Rand,RandBetween

这两个是可以生成随机数函数 应用范围并不广 如果你是个彩票迷,可能会用它来确定你今天想要数字 如果你需要随机数字测试,可能也会用到它 如果你想做一个抽奖Excel,可能会用到它 但是它没办法去重 所以很多做不重复抽奖都转而求向...VBA帮助 Rand() 这个函数是不需要参数 没错,括号里面不需要输入任何内容 类似的零参数函数还有Today,Now 它作用是生成[0,1)之间任何数 注意,含0但是不含1 也就是你永远取不到...1 如果你要无限近似的取不重复数 这个函数比RandBetween更适合一点 因为它生成不重复数据概率更大一点 (当然如果你愿意写无穷大RandBetween上限那也是一样效果) 就在上图随机生成...22*6矩阵中 我们用条件格式看看不重复数据有多少 没有数字变色 如果需要扩充Rand范围 可以用Rand()*(b-a)+a 来随机生成[a,b)范围内数字 RandBetween(下限,上限...说到刚才F9 我们可以做一个山寨版黑客帝国动图 由N个RandBetween(0,1) 加上摁住不放F9 找到Neo在哪里了吗 以上

1.1K20

C++ rand 与 srand 用法

1.rand() 功能: 随机数发生器 用法: ? 所在头文件: ? rand() 内部实现是用线性同余法做,它不是真的随机数,因其周期特别长,故在一定范围里可看成是随机。...rand() 返回一随机数值范围在 0 至 RAND_MAX 间。RAND_MAX 范围最少是在 32767 之间(int)。...; 3) 根据需要多次调用rand(),从而不间断地得到新随机数; 4) 无论什么时候,都可以给srand()提供一个新种子,从而进一步"随机化"rand()输出结果。...; 要取得 (a,b] 随机整数,使用 (rand() % (b-a))+ a + 1; 通用公式: a + rand() % n;其中 a 是起始值,n 是整数范围。...要取得 0~1 之间浮点数,可以使用 rand() / double(RAND_MAX)。

1.8K20

​LeetCode刷题实战470:用 Rand7() 实现 Rand10()

今天和大家聊问题叫做 用 Rand7() 实现 Rand10(),我们先来看题面: https://leetcode-cn.com/problems/implement-rand10-using-rand7...已有方法 rand7 可生成 1 到 7 范围内均匀随机整数,试写一个方法 rand10 生成 1 到 10 范围内均匀随机整数。 不要使用系统 Math.random() 方法。...在本题中,可生成1-49随机数,我们可以只取前40个,当数字大于40时,继续产生1-49随机数,直到小于等于40停止。...在得到1-40随机数后,对10取余再加1,即可得到1到10范围内随机数字 class Solution { public: int rand10() { int ans =...ans % 10 + 1; } }; 好了,今天文章就到这里,如果觉得有所收获,请顺手点个在看或者转发吧,你们支持是我最大动力 。

39440
领券