📄 rand.cpp
字号:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <windows.h>
#include <fcntl.h>
#include <conio.h>
#include <string.h>
int x;
int y;
int z;
struct BLTS_RAND_STRU{
unsigned int rand_num; //!<产生随机数
unsigned int rand_cnt; //!<产生随机数次数
};
void init()
{
SYSTEMTIME systime;
GetSystemTime(&systime);
x = systime.wMilliseconds*systime.wSecond;
//x = 1;
y = x;
z = x;
}
double rand_val(void)
{
double r;
// do{
x = (171 * x) % 30269;
y = (172 * y) % 30307;
z = (170 * z) % 30323;
r = x/30269.0 + y/30307.0 + z/30323.0 ;
printf("r=%0.10f\n", r);
// }while(r >= 1.0);
return r;
}
void blts_rand(int min, int max, int num, BLTS_RAND_STRU *rand_stru)
{
int i;
unsigned int rand_num;
for(i = 0; i < num; i++)
{
rand_num = min + ((int)(rand_val()*(max-min+1)))%(max-min+1);
if(rand_stru[rand_num - min].rand_cnt == 0)
{
rand_stru[rand_num - min].rand_num = rand_num;
rand_stru[rand_num - min].rand_cnt ++;
}
else
{
if(rand_stru[rand_num - min].rand_num != rand_num)
{
printf("num err\n");
return;
}
else
{
rand_stru[rand_num - min].rand_cnt ++;
}
}
}
return;
}
void write_file(int min, int max, int num, BLTS_RAND_STRU *rand_stru, int time)
{
FILE *fp;
char filename[255];
int i;
sprintf(filename, "rand_%d_%d_%d.txt", min, max, num);
fp=fopen(filename,"a");
if(fp <= 0)
{
printf("open file err\n");
}
fseek(fp, 0, SEEK_END);
fprintf(fp, "\n min:%d \t max:%d \t num:%d\n", min, max, num);
fprintf(fp, " time(ms):%d\n", time);
fprintf(fp, " num \t cnt\n");
for(i = 0; i < max-min+1; i++)
{
if(rand_stru[i].rand_cnt != 0)
{
fprintf(fp, " %d \t %d\n", rand_stru[i].rand_num, rand_stru[i].rand_cnt);
}
}
fclose(fp);
}
void main()
{
int min = 0, max = 0, i, num;
BLTS_RAND_STRU *rand_stru;
clock_t start, end;
min = 1;
max = 10;
num = 10;
rand_stru = (BLTS_RAND_STRU*)malloc((max-min+1)*sizeof(BLTS_RAND_STRU));
if(rand_stru == NULL)
{
printf("malloc err\n");
}
memset(rand_stru, 0, ((max-min+1)*sizeof(BLTS_RAND_STRU)));
start = clock();
init();
for(i = 0; i < 1; i++)
{
blts_rand(min, max, num, rand_stru);
}
end = clock();
write_file(min, max, num, rand_stru, end-start);
free(rand_stru);
/*
for(i = 0; i < max-min+1; i++)
{
printf(" %d \t %d\n", rand_stru[i].rand_num, rand_stru[i].rand_cnt);
}
*/
// fd=open("file.txt",O_RDWR|O_CREAT);
/* rc = fwrite(&rand_stru[0], 1, (max-min+1)*sizeof(BLTS_RAND_STRU), fp);
if(rc != ((max-min+1) * sizeof(BLTS_RAND_STRU)))
{
printf("write err\n");
free(rand_stru);
fclose(fp);
}
*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -