gpt4 book ai didi

c - C中的数字检查

转载 作者:行者123 更新时间:2023-11-30 19:13:43 25 4
gpt4 key购买 nike

关闭。这个问题需要details or clarity .它目前不接受答案。












想改进这个问题?通过 editing this post 添加详细信息并澄清问题.

6年前关闭。




Improve this question




(它的意思是什么)

在处理“交易或不交易”项目时,我做了一个函数 check();
检查任何两种情况是否相同,如果相同,则更改其中一种,然后重新检查。

函数deal为有奖的案例设置随机数,然后调用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

提前致谢。

最佳答案

你快到了,有一个简单(而且很常见)的算法或对数组进行加扰。通过一次遍历数组,您可以随机化每个值的位置,而无需复制它们。由于加扰功能的操作,现在不需要检查功能。

#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()
{
srand(time(NULL));

int a = 0;
deal();

for(a = 0 ; a < 22 ; a++)
printf("%d \n", cases[a]);

return 0;
}

//this is a neat algorithm for re-ordering an array without duplication
void scramble(int* array, int length)
{
int i;
int r;
int temp;

for(i = 0 ; i < length ; i++)
{
//swap this element with a random one to it's left (or itself)
r = rand() % (i + 1);

temp = array[r];
array[r] = array[i];
array[i] = temp;
}
}

void deal(void)
{
int r;
int n = 1;

//copy the prizes across directly
for(n = 0 ; n < 22 ; n++)
cases[n] = prizes[n];

scramble(cases, 22);
}

仔细检查 scramble() 函数,你会发现它非常有趣。

编辑以根据评论中的建议将算法更改为单次通过。

关于c - C中的数字检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35266457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com