(它意味着什么)
在处理“交易或不交易”项目时,我做了一个函数check(); 检查是否有两个案例是相同的,如果是,则更改其中一个,然后重新检查。
函数处理为具有奖品的案例设置随机数,然后调用check();
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void deal(void);
void check(void);
int cases[22];
int prizes[22]=1,2,3,4,5,6,8,10,15,20,25,35,50,65,85,100,105,135,165,200,250};
int main()
{ int a=0;
deal();
while (a<22){
printf("%d \n",cases[a] );
a++;
}
return 0;
}
void deal(void){
srand(time(NULL));
int r;
int n = 1;
while (n <= 22){
r = rand() % 21;
cases[n] = prizes[r];
n++;
}//Ends while loop
check();
}//Ends function
void check(void){
int i = rand() % 21;
int m = 0;
int n = 0;
srand(time(NULL));
while(m < 22){//Nested while loop
while ( n < 22){
if (m == n){
n++;
continue;
} else {
if(cases[m] == cases[n]){
cases[m] = prizes[i];
i = rand() % 21;
continue;
}else{
n++;
continue;
}
}
}//End of inside loop
m++;
n = 0;
}//End of nested loop
}//End function
然而,它打印出未经检查的数字,或未正确检查。 我正在使用代码块IDE
提前致谢。
答案 0 :(得分:1)
你几乎就在那里,有一个简单的(很常见的)算法或对阵列进行争夺。通过一次通过数组,您可以随机化每个值的位置而不重复它们。由于加扰功能的操作,现在不需要检查功能。
val result = operson.fold("NoValue")(_.pid.idVal)
详细检查scramble()函数,你会发现它非常有趣。
根据评论中的建议编辑将算法更改为单行。