Visit Our UNIX and Linux User Community


How to set constrain on random numbers in c


 
Thread Tools Search this Thread
Top Forums Programming How to set constrain on random numbers in c
# 1  
Old 01-11-2008
How to set constrain on random numbers in c

Hi,

I am currently trying to generate multiple random numbers in C for different variable:-


die1=1+(rand()%5);
die2=1+(rand()%5);
die3=1+(rand()%5);
die4=1+(rand()%5);

But I need to contrain the total of die1, die2,die3 and die4 to be 5 as well. If i insert die1+die2+die3+die4=5, i do not think it will constrain the distribution.


Please advise. Thanks.


-Jason
# 2  
Old 01-11-2008
Your four variables are integers, each set to 1 + some integer. Three of them must stay at 1 and the fourth one can be two. Pick a number between 1 and 4 and increment only one variable based on that. You pick a 3, die3=2 and the rest stay at 1.
# 3  
Old 01-11-2008
Yeah. I understood the concept. But do we have ways to automate them to generate all sorts of combination in this constrain?

I tried to find from internet related to these cases; they arent related. Most of them are just giving random numbers generation.

As I mentioned previously, if i constrain the total value after the random number is generated for these variables, it wont work because it is not dependent. Unless I can slot something in between the rand?

Thanks.

-Jason
# 4  
Old 01-11-2008
If you had, say, 100, to distribute 5 into 5 variables: You pick a number from 1 to 100, let's say you get 20. The first variable gets the 20. Now 100 - 20 = 80 is left. So pick a number between 1 and 80. You stop when you get to only 1 variable and it gets the remainder. Or if the amount left reaches zero, you stop early and the rest of the variable must be zero.
# 5  
Old 01-11-2008
Hi,

I get the idea now. Thanks. But i just have a thought if that is the case, would it be very bias to have the top variables always get the most of the values rather than the bottom ones?

What I expected at the first place is to have fair distribution of cake among the variables.

let say i have only consider 3 possbile values, (0,1 and 2). And have 5 variables. If I did consider the below idea, in all the cases, the second of third variables always get the most rather than the fourth and fifth variable.

Please advise. Thanks..

Rgrds,
Jason
# 6  
Old 01-11-2008
I can't help you there since your test case is so very constrained. Except to say that only a very few possible outcomes are going to satify you. Enumerate them and pick one.

Getting back to my test case, you could preallocate 10 to each variable and then distibute the remaining 50 as I indicated. Or you could distribute the numbers one at a time. Cycle though each variable and generate a 0 or 1. Add that to each variable and subtract it from the mass to be distributed.
# 7  
Old 01-11-2008
Quote:
Originally Posted by Perderabo
If you had, say, 100, to distribute 5 into 5 variables: You pick a number from 1 to 100, let's say you get 20. The first variable gets the 20. Now 100 - 20 = 80 is left. So pick a number between 1 and 80. You stop when you get to only 1 variable and it gets the remainder. Or if the amount left reaches zero, you stop early and the rest of the variable must be zero.
jason Perderabo idea is cool. but if u want ot " distribute piece of cake evenly" then you can write an additional code

n=1+rand()%4
switch(n)
{
case 1:
// use perderabo idea starting with die1 - die4

case 2:

// use perderabo idea starting with die2 - die4,die1 in circular way

case 3:
//and so on...........
}

i know its not a very pretty solution but considering your unique constraints this is the best solution i got

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Homework & Coursework Questions

Random numbers

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! Write a shell script that will take the sum of two random number? Ex: Random n1 +Random n2 = result i tries to write it but i had some dufficulties ... (3 Replies)
Discussion started by: renegade755
3 Replies

2. Shell Programming and Scripting

Generate random numbers in script

i want to generate a random number through a script, and even if anyone reads the script, they wont be able to figure out what the random number is. only the person who setup the script would know it. something like this could work: random the full thread is here: ... (13 Replies)
Discussion started by: SkySmart
13 Replies

3. Shell Programming and Scripting

unique random numbers awk

Hi, I have a small piece of awk code (see below) that generates random numbers. gawk -F"," 'BEGIN { srand(); for (i = 1; i <= 30; i++) printf("%s AM329_%04d\n",$0,int(36 * rand())+1) }' OFS=, AM329_hole_names.csv The code works fine and generates alphanumeric numbers like AM329_0001,... (2 Replies)
Discussion started by: theflamingmoe
2 Replies

4. Programming

Random numbers in parent/child?

Hi I'm trying to generate random numbers both in parent process and the child process. But I get the same random number in both processes. Why doesn't it generate different numbers altough I seed random number generator? Here's my code: #include <stdio.h> #include <unistd.h> #include... (2 Replies)
Discussion started by: xyzt
2 Replies

5. 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

6. Shell Programming and Scripting

Random Numbers - Perl

Hi Guys I have a script to find Ranomd numbers. But I want to make the file to produce more random. Could u guys help me plz. In this Script I have the code that generates random in for loop and the range I have specified in my %chromlength input and out put will be like this chrno start end... (3 Replies)
Discussion started by: repinementer
3 Replies

7. UNIX for Dummies Questions & Answers

seperating records with numbers from a set of numbers

I have two files one (numbers file)contains the numbers(approximately 30000) and the other file(record file) contains the records(approximately 40000)which may or may not contain the numbers from that file. I want to seperate the records which has the field 1=(any of the number from numbers... (15 Replies)
Discussion started by: Shiv@jad
15 Replies

8. Shell Programming and Scripting

Random numbers from 0 to 1000

Hello All, I want to make a simple script which generate random number from 0 to 1000. and simply display it. Plz HELP!!!!!! Regards, Waqas Ahmed (2 Replies)
Discussion started by: wakhan
2 Replies

9. UNIX for Dummies Questions & Answers

Random numbers without repetition

Is anyone know some scripts to generate random number without repetition using bash; for example generate 10 different random numbers. Thanks (8 Replies)
Discussion started by: asal_email
8 Replies

Featured Tech Videos