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
Post a Comment