//现给定一个含有n个元素的数组,请随机获取其中的m个元素(不能重复获取)。
#include <iostream>
#include <stdlib.h>
using namespace std;
void Grial(int a[], int n,int x)
{
int *b = new int[x];
int k = 0;
int i = n;
while (x--)
{
int j = rand() % i;
b[k++] = a[j];
a[j] = a[i - 1];
i--;
}
for (i=0; i < k; i++)
{
cout << b[i] << endl;
}
}
int main()
{
int a[] = {1,2,3,4,5,6,7,8,9,10};
Grial(a,sizeof(a)/sizeof(int),4);
return 0;
}
//题目描述
//现给定n个物品,其概率分别为P1, P2, P3...Pn,请设计一个接口,根据概率,随机获取一个物品。
#include <iostream>
#include <string.h>
#define _N 6
static flags = 0;
using namespace std;
const char *str[_N]={
"物品1", "物品2", "物品3",
"物品4","物品5", "物品6",
};
const double a[] = {0.1,0.05,0.05,0.4,0.2,0.2};
int index(int x)
{
int b[] = { 0,0.1 * 100, (0.1+0.05) * 100, (0.05*2+0.1) * 100,
(0.4+0.1+0.1) * 100, (0.2+0.4+0.2) * 100,100 };
int i = 0;
for (; i < _N; i++)
{
if (b[i] < x && b[i + 1] >= x)
return i + 1;
}
flags = 1;
return 0;
}
const char *Grial()
{
return str[index(rand() % 100)];
}
int main()
{
cout << Grial() << endl;
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-11-07 01:31:58