想问这段代码的意思,希望能一句句解释

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 中