69,373
社区成员
发帖
与我相关
我的任务
分享
float g_rand;
int g_rand_flag=0;
unsigned int rand_my(unsigned int rand_max,unsigned int rand_min)
{
float rand_result;
if(g_rand_flag==0)
{
g_rand_flag=1;
g_rand=(float)(int)(&rand_min)/(float)(int)(&rand_max);
}
if(g_rand==0 || g_rand==1)
{
g_rand += 8.739f;/*Ëæ±ãдµÄ*/
}
rand_result = g_rand * g_rand;
while(rand_result<1)
{
rand_result *= 10;
}
rand_result = rand_result - (float)((int)rand_result);
g_rand = rand_result==g_rand?8.732139f:rand_result;
return (unsigned)((rand_max-rand_min)*rand_result + rand_min);
}
void main()
{
int a[10];
int i,j;
memset(a,0xff,10*sizeof(int));
for(i=0;i<10;i++)
{
a[i] = rand_my(100,0);
for(j=i-1;j>=0;j--)
{
if(a[i]==a[j])
{
i--;
break;
}
}
}
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void swap(int arr[],int a,int b)
{
int temp;
temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}
int main()
{
int a[100], i, j,n=100;
for(i=0;i<100;i++)//存上1~100的数
{
a[i]=i+1;
}
srand((unsigned)time(NULL));
for(i = 0; i < 10; ++i)
{
j=rand()%n;//要取的数的下标
swap(a,j,n);//换到后面去
n--;//下次取数的范围减一
}
for(i = 99; i > 89; --i) //最后面10个数就是要求的
printf("%d ", a[i]);
printf("\n");
system("pause");
return 0;
}
#include <cstdlib>
#include <iostream>
#include <time.h>
#define N 11
//算10个数的不重复的随机数
using namespace std;
int main(int argc, char *argv[])
{
int a[N], i, j;
srand(time(0));
for(i = 0; i < N; ++i)
{
a[i] = rand()%N;
//判断
for(j = 0; (j<i)&&(i!=0); ++j)
{
if(a[i] == a[j])
{
a[i] = rand()%N;
j = 0; //重新判断
}
}
}
for(i = 1; i < N; ++i) //PS:有点问题, 就是会跟第一个数重复。所以要不算第一个数
printf("%d ", a[i]);
printf("\n");
system("PAUSE");
return EXIT_SUCCESS;
}