c - help me create this random number -


i trying generate random number rand follows:

return + ( rand( ) % n ); 

where shifting value (i.e., first number in desired range of consecutive integers) , n scaling factor (i.e,. width of desired range of consecutive integers).

-- c how program 6th edition - deitel

i write as:

return 1 + ( rand( ) % 1000 ); 

and works, when write code follows:

return 1000 + ( rand( ) % 1112 ); 

i end getting absurdly large numbers, example 1756 , 1877. last 2 outputs occurred.

i returning value integer number function call within printf statement doing same working statement, not think way calling function.

what doing wrong...?

you not doing wrong. wrong expectations.

a lowest possible possible number can generate, highest can generate not n... n range size, highest number can generate a+n. important not copy algorithm , code, understand why works. let's take look:

return 1000 + ( rand( ) % 1112 ); 

what range of rand()? number between 0 , rand_max (which large number.

what range of ( rand() % 1112)? first, modulo operation. possible remainders when divide positive integers 1112? 0 (for example, 0/1112), or high 1111 1111/1112 has remainder of 1111) after loops (1112/1112 has remainder 0, 1113/1112 has remainder of 1, , on).

now, range of 1000 + (any number 0 1111)?


Comments

Popular posts from this blog

ios - iPhone/iPad different view orientations in different views , and apple approval process -

java Extracting Zip file -

C# WinForm - loading screen -