标签:mes name and 生成 random src div sans mod
已有方法rand7 可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10生成 1 到 10 范围内的均匀随机整数。
不可使用系统的Math.random()方法
样例 1:
输入:1
输出:[7]
样例 2:
输入:2
输出:[8,4]
样例 3:
输入:3
输出:[8,1,10]
思路为使产生随机数函数的值域覆盖1到10,且各个数值一定要等概
①rand7/2 产生0到3随机数,-rand7/2 产生-3到0随机数。
②(-rand7/2) 剔除-3和-2  产生0和-1随机数
③2*rand7  产生2到14随机偶数,2*rand7 + ②  产生1到14随机
数
④将③产生的随机数剔除大于10的部分即为所求
代码如下
#include<iostream>
#include<stdlib.h>//包含rand()的库
using namespace std;
class Rand_7
{
	public:
		int rand_7()
		{
			return 1+rand()%10;
		}
};
class Rand_10
{
	public:
		int rand_10()
		{
			Rand_7 ra;
			int lo = -2;
			while(lo < -1)
				lo = -ra.rand_7()/2;//产生0或-1的随机数
			int res = 2*ra.rand_7()+lo;//将2*ra.rand()_7()的值域拓宽至1到14的所有整数
			while(res > 10)//剔除大于10的部分
				res = 2*ra.rand_7()+lo;
			return res;
		}
};
int main()
{
	Rand_10 ra;
	int a = 0;
	cout<<"please input number:";
	cin>>a;
	cout<<"[";
	for(int i=0; i<a-1; ++i)
		cout<<ra.rand_10()<<",";
	cout<<ra.rand_10()<<"]"<<endl;
	return 0;
}
试一下

标签:mes name and 生成 random src div sans mod
原文地址:https://www.cnblogs.com/area-h-p/p/13256311.html