首页 > 其他分享 >简易随机数发生器

简易随机数发生器

时间:2022-12-01 18:03:49浏览次数:42  
标签:... void random 发生器 简易 num 随机数 Type 1000


代码:

 

/*
This is a free Program, You can modify or redistribute it under the terms of GNU
*Description: 随机数发生器,指定一个数,比如1000,要求随机产生1到1000之间的
任意数,并且1到1000之间任何一个数产生的概率是相等的,都是1/1000
*Language: C++
*Development Environment: VC6.0
*Author: Wangzhicheng
*Date: 2012/10/5
*/

#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

#define Max 1e10

typedef long Type;

template<class Type>
class RandomProducer {
private:
Type *N;
Type *random;


void setN(Type num) {
*N=num;
}
Type getN() const {
return *N;
}
void setRandom(Type r=0) {
*random=r;
}
Type getRandom() {
return *random;
}

void Producer() {
srand(unsigned(time(0)));

Type i;
Type k=1;

for(i=1;i<=getN();i++) {
if(rand()%k==0) setRandom(i);
k++;
}
/*
如果最终产生是1,那么必须保证第1次,第2次,...第N次都产生1,
Ai={第i次产生1},i=1,2,...N.
P(AN)=P(A1A2A3...AN)=P(A1)*P(A2|A1)*P(A3|A1A2)*...*P(AN|A1A2...AN-1)
=1*(1/2)*(2/3)*(3/4)*...((N-1)/N)=1/N
其余类推,所以按照以上方法,产生1到1000之间任意数的概率是1/N
*/
}
public:
RandomProducer(Type num) {
if(num<=0 || num>=Max) {
cerr<<"输入的数据必须大于0且小于"<<Max<<endl;
cerr<<"程序退出!"<<endl;
exit(1);
}

N=new Type;
setN(num);

random=new Type;
setRandom(0);

Producer();
}
~RandomProducer() {
delete N;
N=0;
delete random;
random=0;
}

void show() const {
cout<<"产生的随机数是:"<<*random<<endl;
}
};
void main() {
cout<<"Written By Wangzhicheng,CopyRight(C) 2012/10/5 "<<endl;

Type N;
cout<<"请输入一个大于0且小于"<<Max;
cout<<"的整数:";
cin>>N;
if(!cin.good()) {
cerr<<"输入格式非法,程序退出!"<<endl;
exit(1);
}
RandomProducer<Type>instance(N);
instance.show();
}

测试:

 

 

 

标签:...,void,random,发生器,简易,num,随机数,Type,1000
From: https://blog.51cto.com/u_15899033/5903541

相关文章

  • C#-简易公式计算器代码实现
    计算器如图所示,仅实现加减乘除及括号功能,公式错误时会有提示。首先建立一个inputList,每点击数据一下,便将内容添加至inputList中,点击后退时则删除List中最后一个元素。......
  • 明明的随机数
    描述明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不......
  • 0129-Go-随机数
    环境Time2022-08-25Go1.19前言说明参考:https://gobyexample.com/random-numbers目标使用Go语言的随机数。示例packagemainimport("fmt""math......
  • 简易 文章发布系统——后台管理系统
       这里建立一个简易的文章发布系统——后台管理系统,功能包括文章的发表、查看文章列表,其中还提供对文章的删除和修改功能。    首先使用mysql建立数据库inf......
  • 基于GUI的简易图像处理系统设计与实现
    自定义简易图像处理系统:综合此前内容得出该系统,系统功能包括:图像简单处理、图像的灰度变换、图像直方图均衡化和比特平面分层、空间域滤波、频率域滤波、彩色图像的空间域滤......
  • Python常用的功能(随机数生成、读写文件、链接数据库)
    一、随机数生成importrandom#生成1-1000之间的伪随机数num=random.randint(1,1000)二、读文件read=open("c:\\text.txt","r")lines=read.readlines()......
  • goioc:一个使用 Go 写的简易的 ioc 框架
    目录goioc介绍快速上手接口介绍使用goioc如何使用生命周期实例化获取对象结构体字段依赖注入Dispose接口反射形式使用goioc如何使用接口、结构体、结构体指针不会自动......
  • 学习lfs 项目 随机制作一个简易的系统
    tip:这个小系统慢慢补充从开始的基础文件到,启动之后initramfs更换根之后的系统,也就是呈现在用户面前的最终系统环境首先需要概略讲解下linux启动:开机-------------......
  • 随机数生成
    知道脑瘫怎么写吗,呢熬脑忒安瘫自己之前写的平衡树博客里面明明有个随机生成值,不看,非要看别人的博客不多说了建议配合这个一起食用,作为对拍的方法先用srand(time(0))去......
  • 手机直播源码,flutter 随机数的生成和保留两位小数
    手机直播源码,flutter随机数的生成和保留两位小数一、生成最小值和最大值之间的随机数使用Random().nextInt()方法,生成一个整数 random(min,max){ //+min 表......