chapter 12

1. 内容##

讲了knuth书中的几种随机抽样函数

1.1 taocp解决方案###

假设要选m个,总数有n个,有一个可产生任意随机数的函数bigrand().

void knuth(int m, int n)
{
    for(int i=0; i

1.2 其他方案###

1.2.1 往空集合插数,集合里的数就是结果###

利用了c++ stl 的set

void stlset(int m, int n)
{
    set S;
    while( S.size()

1.2.2 把序列打乱,选中前m个元素###

void genshuf(int m, int n)
{
    int *x=new int[n];
    for(int i=0; i

2. 习题##

9.怎么使最坏情况下生成m次随机数就够了?###

每次迭代都有一个绝对不会已经存在的最大值,如果随机数重复了,就把最大的加进去

#include 
#include  
using namespace std;
void getSet(int m,int n)//在0 -- n-1 中挑选m个 随机数 
{
    srand(time(NULL));//这个很关键 
    set S;
    for(int i=n-m;i::iterator j;
    for(j=S.begin();
         j!=S.end();++j)
    cout<<*j<<" "; 
}
int main()
{ 
    getSet(5,10);
    return 0;
} 

你可能感兴趣的:(chapter 12)