int seq_gen(void){
FILE* fd=fopen("./1000.txt","w");
char* scope[]={"-1","0","1"};
srand((unsigned)time(NULL));
int i;
for( i=0;i<LEN;i++){
fprintf(fd,"%s\n",scope[rand()%3]);
}
fclose(fd);
return 0;
}
差不多是这个意思。。。
int seq_gen(void) {
FILE* fd = fopen("./1000.txt", "w"); // 以写的方式打开1000.txt文件
//char* scope[] = { "-1","0","1" }; // 这样写有问题!!!
char scope[] = { '-1', '0', '1' }; // 定义字符数组,将字符1、字符0、字符1存储
srand((unsigned)time(NULL)); // 随机函数,参数随机值
int i;
for (i = 0; i < LEN; i++) { // 循环LEN次
fprintf(fd, "%s\n", scope[rand() % 3]); // 将scope字符数组中的字符按照 随机函数产生的 随机值 % 3 得到的索引,取得的字符写入文件中。
}
fclose(fd); // 关闭文件
return 0;
}
通俗的说:
向文件1000.txt中写入LEN个随机数,这些随机数都在集合 {-1,0,1 }中.
注意两处:
1. 如何随机? srand设置随机序列初始值为当前时刻,rand才看起来是随机的,其实是伪随机。
(因为每次程序运行,当前时刻都不同)
2. 如何确保一定从 {-1,0,1} 中选? scope[ 随机数 % 3], 对3求余所得值 作为 下标 ,下标必然是0或1或2,这样必然是数组{-1,0,1}中的一个。
用概率语言描述:
对 一个三点均匀分布 采样LEN次 ,获得 LEN个样本,将这些样本写入 文件 1000.txt 中