博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【面试题】:利用rand7模拟rand10
阅读量:3706 次
发布时间:2019-05-21

本文共 832 字,大约阅读时间需要 2 分钟。

问题

已知有个rand7()的函数,返回1到7随机自然数,让利用这个rand7()构造rand10() 随机1~10。

思路

rand7只能为1-7之间的数,如何让他模拟1-10间的数呢?

肯定要通过概率性的公式进行换算才行!
首先想到的是将其扩大,扩大到多少合适呢?一想想7的倍数,还是10的倍数,想想觉得50左右即可,所以直接用:
rand7*7+rand7(这里是两个随机)
然后再写逻辑 (当然,这里也有一些逻辑上不是特别严密的地方,但这样精度差不多满足了。。)
1-5为 1
6-10为2…
…(依次类推)
40-45为9 …
46-50为10

代码

(去掉注释内容就能打印了)// rand7模拟rand10#include 
#include
using namespace std;int num[11];int main(){ srand(time(NULL)); memset(num,0,sizeof(num)); //统计结果数组 for(int i=1;i<100000;i++){ int a =rand()%7,b=rand()%7+1; if(a*7+b>=35){ if(a*7+b==35){ if(rand()%2==1){ num[7]++; } else{ num[8]++; } } else if(a*7+b==40 || a*7+b==45){ // cout<<(a*7+b)/5<

结果显示

这里写图片描述

结果第一行为随机的数
第二行为 概率

你可能感兴趣的文章
Git命令的详细使用
查看>>
Linux下基于QT串口编程测试一
查看>>
STM32的PWM输入模式设置并用DMA接收数据
查看>>
windows下mongodb设置用户名密码 用python连接
查看>>
zigbee学习 示例程序SampleApp中通讯流程
查看>>
单片机上使用TEA加密通信
查看>>
STM32F4的IO设置测试
查看>>
利用数组实现队列操作
查看>>
http //t cn/xx 等链接的生成与还原
查看>>
PyCharm 设置运行参数
查看>>
vs 外部依赖项 附加依赖项以及如何添加依赖项目
查看>>
TensorFlow 辨异 —— tf placeholder 与 tf Variable
查看>>
Python debug —— invalid literal for int with base 10
查看>>
matplotlib tricks(关闭坐标刻度 坐标轴不可见)
查看>>
9. Linux系统日志管理
查看>>
17. Linux系统的ftp服务
查看>>
Python 之 高级变量类型
查看>>
Python 综合应用 —— 名片管理系统
查看>>
Python 之 变量进阶(理解)
查看>>
Python 之 函数进阶
查看>>