有没有会用C++编写随机选择的函数?

举一个最简单的实例,比如说在1~36个数字里随机挑选出7个数字,就像买彩票那样.(我的家底只有11分,豁出10分来寻求你的答案了啊,还不快帮帮忙~~)... 举一个最简单的实例,比如说在1~36个数字里随机挑选出7个数字,就像买彩票那样.(我的家底只有11分,豁出10分来寻求你的答案了啊,还不快帮帮忙~~) 展开
 我来答
帐号已注销
2012-07-22 · TA获得超过3000个赞
知道大有可为答主
回答量:1338
采纳率:75%
帮助的人:1295万
展开全部
#include<iostream>
#include<ctime>
#include<algorithm>
using namespace std;
int main(void)
{
int a[36];
int b[7];
for (int i = 0; i < 36; ++i)
{
a[i] = i + 1;
}

srand((unsigned int)time(NULL));
random_shuffle(a, a + 36);
copy(a, a + 7, b);

for (int i = 0; i < 7; ++i)
{
cout<< b[i] << " ";
}

cout<< "\n";
system("pause");
}
用了STL中的一个随机排列函数random_shuffle。有现成的为何不用呢?
葱学长
2012-07-25
知道答主
回答量:30
采纳率:0%
帮助的人:23.4万
展开全部
//只能用伪随机来实现,这是我们学校的一个作业题里用到的,没有规范化去写~

#include <iostream>
unsigned long a;
using namespace std;

#include <limits.h>//声明INT_MAX(Maximum (signed) int value)和ULONG_MAX(Maximum unsigned long value)常量

#include <windows.h>//声明GetTickCount()函数,其返回从开机到现在经过的毫秒数

/*
*不断用X= ((N*X+M)mod K )进行迭代计算
*那么得到的无穷多个x值,近似于在(0,K)上的均匀分布
*其中N,M,K为较大的数(N最好是素数).
*/

class TRandom
{
public:
TRandom (long seed=0) { mSeed=(seed?seed: GetTickCount());} //缺省使用系统时间(开机后经过的毫秒数)为种子
void Seed(long seed=0){ mSeed=(seed?seed: GetTickCount());} //也可以定义自己的种子
int Integer(){ return Next();} //取得一个随机的整数
int Integer(int min,int max){ return min+Next()%(max-min+1);} //取得一个在指定范围内的随机整数
double Real() {return double(Next())/double(INT_MAX);}//取得一个随机的(0到1之间的)小数
private:
void Change() {mSeed=(314159265*mSeed+13579)%ULONG_MAX;}//使用调和算法
int Next() //取得伪随机数发生器的随机数序列中的下一个随机整数
{
int loops=mSeed%3;
for(int i=0;i<=loops;i++)
Change();
return int(mSeed/2); //种子是unsigned long型的,mSeed/2恰好是int的最大值
}
unsigned long mSeed;//随机数发生器的种子
};
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式