C - random number generation

shoham

newbie in C here. I'm trying to have a different value for a variable everytime I run a program. I have this code:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ADD 1
#define SUB 2
#define MUL 3
#define DIV 4

int main(void)
{
    double out;
    int choice;
    float x, y;
    printf("Welcome to our first calculator program!\n");
    printf("===========================\n");
    printf("Please insert 2 numbers:\n");
    scanf("%f%f", &x, &y);
    choice = 1 + srand(time(NULL)) % 4;
    if(choice == ADD)
            out = x + y;
    else if(choice == SUB)
            out = x - y;
    else if(choice == MUL)
            out = x * y;
    else
    {
            if(y != 0)
                    out = x / y;
            else
            {
                    out = 0;
                    fprintf(stderr, "error");
                    return 1;
            }
    }
    printf("The outcome is: %0.2lf\n", out);
    return 0;
}

but it always gives me 4 in choice. I don't get why...

Can you help me? Thanks.

Morten Jensen

Right now you are calling srand and expecting a random number. You should seed the entropy pool by calling srand and THEN calling rand to get the random number :)

An example of usage taken from: http://www.cplusplus.com/reference/cstdlib/srand/

int main ()
{
  printf ("First number: %d\n", rand()%100);
  srand (time(NULL));
  printf ("Random number: %d\n", rand()%100);
  srand (1);
  printf ("Again the first number: %d\n", rand()%100);

  return 0;
}

See how you seed by calling srand and then retrieve the random integer from rand

You need to do this:

srand(time(NULL));
choice = 1 + rand() % 4;

instead of this:

choice = 1 + srand(time(NULL)) % 4;

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

On the random number generation dSFMT performance on C++

From Dev

Pseudo-random number generation in MEX C

From Dev

rand() Random Number Generation C++

From Dev

Efficient random number generation with C++11 <random>

From Dev

Spark - Random Number Generation

From Dev

Random number Generation with Seed

From Dev

Random number generation with in a range

From Dev

generation of random number in MATLAB

From Dev

Random number generation algorithm

From Dev

generation of random number in MATLAB

From Dev

Random number generation in Solaris?

From Dev

pseudo random number generation

From Dev

Random Number generation with GameplayKit

From Dev

Random Number Generation in R

From Dev

Random number generation with seeds

From Dev

C++ thread-safe uniform distribution random number generation

From Dev

How to use Mersenne Twister random number generation library in C?

From Dev

Grokking Random Number Generation in Haskell

From Dev

Random number generation on card and on terminal?

From Dev

Understanding uniform random number generation

From Dev

Random Number Generation in SQL Server

From Dev

Using engines for random number generation

From Dev

Random number generation using srand()

From Dev

Role of seed in random number generation

From Dev

User trustable random number generation

From Dev

Constraining random number generation in Python

From Dev

Random number generation function not work

From Dev

Exclude number from SecureRandom random number generation

From Dev

Generation of 20 random nums in c