gpt4 book ai didi

c - 我以为我昨天修复了它,但我搞砸了,它仍然生成相同的随机数

转载 作者:行者123 更新时间:2023-11-30 21:38:05 25 4
gpt4 key购买 nike

所以我以为昨天你们回答我的问题时我解决了这个问题,但今天我意识到我忘记了我禁用了名为 bubbleSort() 的函数,一旦我启用了该函数, main 正下方的 addRandomNumbers() 函数就开始生成尽管我在程序启动时为生成器播种了一次,但与随机数相同的数字而不是再次不同的数字。如果我禁用 bubbleSort() 函数,它只会生成不同的随机数,这很奇怪,因为这是一个完全不同的函数。但我需要冒泡排序函数,以便我要创建的 binarySearch() 函数能够工作

 #include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define clear system("cls")
#define pause system("pause")
#define SIZE 5000
#define LB 1 //this is the lower bound
#define UB 500 //this is the upper bound


//Lets Prototype
void addRandomNumbers(int n[]);
void binarySearch(int n[],int c[]);
void bubbleSort(int n[]);
void displayRandomNumbers(int n[],int c[]);

int main(){
int numbers[SIZE]={0}, counter[SIZE]={0};
srand((unsigned)time(NULL));

addRandomNumbers(numbers);
bubbleSort(numbers);
binarySearch(numbers,counter);
displayRandomNumbers(numbers,counter);

}//end main

void addRandomNumbers(int n[]){
int i;

for (i=0; i < SIZE; i++){
n[i] = LB + rand() % (UB - LB + 1 );
}
}//end addRandomNumbers

void bubbleSort(int n[]){
int i,temp=0;
for(i=0;i<SIZE-1;i++){
temp=n[i];
n[0]=n[1];
n[i+1]=temp;
}//end for loop
}//end bubble sort

void binarySearch(int n[],int c[]){
int i,k=0,l,u,mid;


for(i=0;i<SIZE;i++){

l=0,u=SIZE-1;
while(l<=u){
mid=(l+u)/2;
if(n[i]==n[mid]){
k++;
break;
}
else if(n[i]<n[mid]){
u=mid-1;
}
else
l=mid+1;
}//end while loop
c[i]=k;
}//end for loop
}

void displayRandomNumbers(int n[], int c[]){
int i;
char flag;
for(i=0;i<UB;i++)
if(c[i]<100)
printf("The number %i appears %i times\n",n[i],c[i]);
pause;
}//end displayRandomNumbers

最佳答案

我认为您看到的数字与显示的输出概率相同。

如果我可以总结一下你的程序,你:

  1. 用 LB (1) 和 UB (500) 之间的数字填充 5000 长度的数组(addRandomNumbers 函数)
  2. 对数组进行排序(bubbleSort 函数)
  3. 打印第一个元素(displayRandomNumbers 函数)。

假设您的排序功能有效。如果该值是针对 5000 个数字中的任何一个进行采样的,则排序数组的第一个元素将为 1。如果没有选择1的值,则可能是2,也可能是3,等等。

您观察到 2 或更大的数字作为数组的第一个元素的概率是多少?它是 1 的零值被采样的概率。假设均匀概率(您的采样方法不提供):

p(1 的零观测值) = (499/500) ^ (5000) = 0.00005

换句话说,未排序的数组很可能在某个地方包含1值。当您对其进行排序时,该值将成为数组的第一个元素。

关于c - 我以为我昨天修复了它,但我搞砸了,它仍然生成相同的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20167807/

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