69,370
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
int main(void)
{
for (int h=0;h<3;h++)
{
int a[5], aa[5] = {0}, i, j, k;
for (i = 0;i < 5;i++)
if (aa[i] == 0)
{
a[i] = rand() % 10;
aa[i]++;
}
for (i = 0;i < 5;i++)
cout << a[i] << "," << "\t";
}
cout << endl;
return 0;
}
#include <stdio.h>
unsigned long rand_seed=1;
void mysrand(unsigned int seed)
{
rand_seed=(unsigned long)seed;
}
int myrand(void)
{ /* rand_seed每次迭代为新的值 */
return( ((rand_seed = rand_seed * 214013L
+ 2531011L) >> 16) & 0x7fff );
}
int main()
{
int i;
// mysrand((unsigned)time(NULL));
for(i=0;i<10;i++)
printf("%d\t",myrand()%100);
return 0;
}
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main(void)
{
srand(time(NULL));
for (int h=0;h<3;h++)
{
int a[5], aa[5] = {0}, i;
for (i = 0;i < 5;)
if (aa[i] == 0)
{
a[i] = rand() % 10;
//cout<<"a[i] = "<< a[i]<<endl;
aa[i]++;
i++; //保证每个都能获取一个随机值
}
for (i = 0;i < 5;i++)
cout << a[i] << "," << "\t";
cout<<endl;
}
cout << endl;
return 0;
}
若想保证每个数组元素都获得一个随机值,建议将i++放在if判断体内;#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int d[6];
int i,n,a,b,t;
int c,j;
void main() {
srand(time(NULL));
printf("shuffle 0..n-1 demo\n");
for (n=1;n<=5;n++) {/* 测试1~5个元素 */
printf("_____n=%d_____\n",n);
j=1;
for (c=1;c<=n;c++) j=j*c;/* j为n! */
j*=n*2;
for (c=1;c<=j;c++) {/* 测试n*2*n!次 */
for (i=0;i<n;i++) d[i]=i;/* 填写0~n-1 */
for (i=n;i>0;i--) {/* 打乱0~n-1 */
a=i-1;b=rand()%i;
if (a!=b) {t=d[a];d[a]=d[b];d[b]=t;}
}
printf("%04d:",c);
for (i=0;i<n;i++) printf("%d",d[i]);
printf("\n");
}
}
printf("shuffle 1..n demo\n");
for (n=1;n<=5;n++) {/* 测试1~5个元素 */
printf("_____n=%d_____\n",n);
j=1;
for (c=1;c<=n;c++) j=j*c;/* j为n! */
j*=n*2;
for (c=1;c<=j;c++) {/* 测试n*2*n!次 */
for (i=1;i<=n;i++) d[i]=i;/* 填写1~n */
for (i=n;i>1;i--) {/* 打乱1~n */
a=i;b=rand()%i+1;
if (a!=b) {t=d[a];d[a]=d[b];d[b]=t;}
}
printf("%04d:",c);
for (i=1;i<=n;i++) printf("%d",d[i]);
printf("\n");
}
}
}
/* 保证5次结果的每组3个均不同,并且这5次的结果也应该不同*/
#include <iostream>
using namespace std;
void DE(int i)
{
int aa[100],h = 100,m,x,y,j,k,xr[3];
for (k=0;k<5;k++) // 保证5次结果的3组数字都应该不同
{
for (m = 0;m<100;m++)
aa[m] = m;
for (y = i;y< h - 1;y++) // 删除第i个元素,这样数组中就没有i元素,可以保证与xr[0]、xr[1]、xr[2]不重复
aa[y] = aa[y + 1];
h--;
for (x = 0;x <3;x++) //每组3个数组都不应该相同
{
int g = rand() % h;
xr[x] = aa[g];
for (y =aa[g] ;y < h - 1;y++) //删除当前xr[x]元素,保证xr[0]、xr[1]。、xr[2]不相同
aa[y] = aa[y + 1];
h--;
}
for (x = 0;x < 3;x++)
cout << xr[x] << "," << "\t";
cout << endl;
}
}
int main(void)
{
for (int h = 0;h < 1;h++) // 运行3次
DE(2); // 调用函数,保证2与产生的每组随机数不一样
return 0;
}
#include <iostream>
using namespace std;
void DE(int i)
{
int aa[100],h = 100,m,x,y,j,k,xr[3];
for (k=0;k<5;k++) // 保证5次结果的3组数字都应该不同
{
for (m = 0;m<100;m++)
aa[m] = m;
for (y = i;y< h - 1;y++)
aa[y] = aa[y + 1];
h--;
for (x = 0;x <3;x++) //每组3个数组都不应该相同
{
int g = rand() % h;
xr[x] = aa[g];
for (y = i;y < h - 1;y++) //剔除 i元素
aa[y] = aa[y + 1];
h--;
}
for (x = 0;x < 3;x++)
cout << xr[x] << "," << "\t";
cout << endl;
}
}
int main(void)
{
for (int h = 0;h < 3;h++) // 运行3次
DE(2); // 调用函数,保证2与产生的每组随机数不一样
return 0;
}