generating 16 digit random number in C


 
Thread Tools Search this Thread
Top Forums Programming generating 16 digit random number in C
# 1  
Old 08-11-2009
generating 16 digit random number in C

Hi,


How can we generate 16 digit random nos in C.
# 2  
Old 08-11-2009
Code:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
        int n;
        srand(time(NULL));
        for(n=0; n<4; n++)  printf("%04d", rand()%10000);
}

# 3  
Old 08-12-2009
see also lrand48()

But. None of these are going to give you 16 digit random numbers. They are not meant for that. Corona's idea of concatenating output from a PNG is about as good as it gets.
Note that it will cycle (or repeat) 4 times faster because you are using four calls to a PNG to get one number, ie your sequence will start to become non random after a few thousand calls. ie., approximately (RAND_MAX /2) / 4 = ~4096 numbers

If you want something better try the GSL - gnu scientific library

GSL - GNU Scientific Library - GNU Project - Free Software Foundation (FSF)
# 4  
Old 08-14-2009
thnks for reply...
But my requirement is like ,we r designing a product that will generate a unique 16 digit no for every call.
# 5  
Old 08-14-2009
Does my solution work, or do you have different requirements? Note that my solution will return the same value if called more than once a second!

Last edited by Corona688; 08-14-2009 at 02:44 PM..
# 6  
Old 08-14-2009
Another thought - not all unixes have /dev/urandom and /dev/random.
You can read abou them, but they do provide a random bitstream. If your box has them (Soalris & Linux come to mind) read on -

An example of how to play with the bitstream using Corona's idea.:
Code:
#include <stdio.h>

typedef
union
{
	char tmp[sizeof(unsigned long long)];
	unsigned long long myll;
} ll_t;


unsigned long long llrand(void)
{
	FILE *in=fopen("/dev/urandom", "r");
	ll_t ll_u;
	fread(ll_u.tmp, sizeof(ll_u.tmp), 1, in);
	fclose(in);
	return ll_u.myll;
}

int main()
{
	char tmp[64]={0x0};
	char working[64]={0x0};
	int i=0;
		
	for(i=0; i< 20; i++)
	{
		while(strlen(tmp) < 16)
		{
			sprintf(working, "%lu", llrand() );
			strcat(tmp, working);
		}
		tmp[16]=0x0;
		printf("%s\n", tmp);
		*tmp=0x0;
	}
	return 0;
}

This needs work but you get the idea.
# 7  
Old 08-17-2009
thanks jim...
its generating 16 digit no, but could please tell me that how the nos can be generated in double format.

i tried using atof() , but did nt work.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Generating a POSIX random number?

Hi Guys and gals... As you know I am getting to grips with POSIX and hit this stumbling block. Generating two random numbers 0 to 255 POSIXly. Speed in not important hence the 'sleep 1' command. I have done a demo that works, but it sure is ugly! Is there a better way? #!/bin/sh # Random... (12 Replies)
Discussion started by: wisecracker
12 Replies

2. Shell Programming and Scripting

Generating a Random String of 'n' length

Hi, How can I generate a string of random characters (alpha+numeric) of a particular length ? For e.g. for n=5, output = 'kasjf' n=10, output = 'hedbcd902k' Also, please let me know if random (valid) dates could also be generated. Thanks (7 Replies)
Discussion started by: rishigc
7 Replies

3. Shell Programming and Scripting

Random number generating script?

Having a hard time with this. Very new to scripting and linux. Spent all sunday trying to do this. Appreciate some help and maybe help breaking down what the syntax does. Create a Bash program. It should have the following properties • Creates a secret number between 1 and 100 i. The... (3 Replies)
Discussion started by: LINUXnoob15
3 Replies

4. Shell Programming and Scripting

Generating Random Number in certain range

Hi there I am trying to generate a random number between 40 and 70 using the shell here is my code so far and it keeps going above 70. all help much appreciated! comp=$(( RANDOM%70+40 )) echo $comp (4 Replies)
Discussion started by: faintingquiche
4 Replies

5. Shell Programming and Scripting

Generate 16 digit positive random Numbers

Hi Unix Gurus, I have a requirement to generate positive random 16 and 13 digit numbers. Here is the script I have so far..... number=$RANDOM$RANDOM$RANDOM$RANDOM; let "number %= 10000000000000"; echo $number But sometimes it is generating negative numbers and also 15 digit... (8 Replies)
Discussion started by: scorpioraghu
8 Replies

6. Programming

Generating Random Number in Child Process using Fork

Hello All, I am stuck up in a program where the rand functions ends up giving all the same integers. Tried sleep, but the numbers turned out to be same... Can anyone help me out how to fix this issue ? I have called the srand once in the program, but I feel like when I call fork the child process... (5 Replies)
Discussion started by: manisum
5 Replies

7. Programming

C Help; generating a random number.

Im new to C, and Im having a hard time getting a random number. In bash, I would do something similar to the following to get a random number; #!/bin/bash seed1=$RANDOM seed2=$RANDOM seed3=$RANDOM SEED=`expr $seed1 * $seed2 / $seed3` echo ${SEED%.*} Now, in online examples... (4 Replies)
Discussion started by: trey85stang
4 Replies

8. Shell Programming and Scripting

Generating random numbers

Hi, I am having trouble with generating random numbers. can this be done with awk? So I have a file that looks like this: 23 30 24 40 26 34 So column1 is start and column2 is end. I want to generate 3 random #'s between start and stop: So the output will look like this: ... (9 Replies)
Discussion started by: phil_heath
9 Replies

9. Shell Programming and Scripting

Generating random number within a specific range (0.5-1.5)

Hello, need a way to generate numbers within 0.5-1.5 range Has to be totally random: 0.6 1.1 0.8 1.5 0.6 and so on.... How to? (10 Replies)
Discussion started by: TehOne
10 Replies

10. Shell Programming and Scripting

generating random numbers with hamming distance 4

Hi I want to genrate 10 random 32 bit binary numbers with hamming distance 4 and 8. 11010110010101010101010101010101 11010110010101010100010101010010 if we look carefully at these two binary numbers they differ at 4 places hence hamming distance 4. Now I want to genrate these numbers... (2 Replies)
Discussion started by: hack_tom
2 Replies
Login or Register to Ask a Question