首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

随机数有关问题

2012-02-16 
随机数问题.1 从三十六个数(1-36)中随机抽出七个2从三十六个数(1-36)中随机抽出七个一次取出一个.要求概

随机数问题.
1> 从三十六个数(1-36)中随机抽出七个
2>   从三十六个数(1-36)中随机抽出七个     一次取出一个.要求概率相等.
写一个就有分!

[解决办法]
#include <algorithm>
#include <vector>
#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
int i;
vector <int> vec;
for(i=1; i <37; i++)vec.push_back(i);

vector <int> ::iterator iter1 = vec.begin();
for(; iter1 <vec.end(); iter1++)
cout < <*iter1 < < "\t ";

cout < <endl;
random_shuffle(vec.begin(), vec.end());

cout < < "you choose: " < <endl;
for(i=0; i <7; i++)
cout < <vec[i] < < "\t ";
cout < <endl;

system( "pause ");
return 0;
}
[解决办法]
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int main()
{
int i, tmp, array[36]={0};

srand(time(NULL));
for(i=0; i <7; i++)
{
tmp=rand()%36;
if(array[tmp] == 0)array[tmp]=1;
else i--;
}

printf( "You choose:\n ");
for(i=0; i <36; i++)
if(array[i] == 1)printf( "%d\t ", i+1);

system( "pause ");
return 0;
}
[解决办法]
哈哈,不知道怎么写呢,能够实现随机数产生,但是楼主要求几率相等,是不是要根据把一个圆平均分为36份,然后没一份赋予一个值,在借助rand()函数,进行随机产生数啊?

[解决办法]
用srand(time(NULL))可以取得随即数
这里是用时间做种子

热点排行