Here's the code for my program. it's supposed to get two numbers from user then generate random numbers using rand function. but when I compile it, the numbers are not random.
I also wrote this in java, and that one works perfectly.
C version:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int cmpfunc();
int main()
{
puts("How many numbers do you want to generate?");
int n;
scanf("%d", &n);
int numbers[n];
puts("What should be the largest number possible?");
int m, i;
scanf("%d", &m);
int result[m];
for(i=0;i<m;i++)
numbers[i] = i + 1;
for(i=0;i<n;i++)
{
srand(time(NULL));
int r = rand() % m;
result[i] = numbers[r];
numbers[r] = numbers[m - 1];
m--;
}
qsort(result, n, sizeof(int), cmpfunc); //sorting the result array
for(i=0;i<n;i++)
{
printf("%d\n", result[i]);
}
getch();
return 0;
}
int cmpfunc (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}
Java version:
import java.util.*;
public class RandomNumberGenerator {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("How many numbers do you want to generate?");
int n = in.nextInt();
System.out.println("What should be the largest number possible?");
int m = in.nextInt();
int numbers[] = new int[m];
for(int i=0;i<numbers.length;i++)
numbers[i] = i + 1;
int result[] = new int[n];
for(int i=0;i<result.length;i++)
{
// make a random index between 0 and n - 1
int r = (int) (Math.random() * m );
result[i] = numbers[r];
// move the last element into the random location
numbers[r] = numbers[m - 1];
m--;
}
System.out.println("Do you want the result to be sorted? (1 for Yes, others for No)");
int ans = in.nextInt();
if(ans==1)
Arrays.sort(result);
System.out.println("Result:");
for (int r : result)
System.out.println(r);
pressAnyKeyToContinue();
}
private static void pressAnyKeyToContinue()
{
System.out.println("Press Enter to continue.");
try
{
System.in.read();
}
catch(Exception e)
{}
}
}
Aucun commentaire:
Enregistrer un commentaire