Use of qsrand, random method that is not random

后端 未结 7 2644
误落风尘
误落风尘 2021-02-19 00:12

I\'m having a strange problem here, and I can\'t manage to find a good explanation to it, so I thought of asking you guys :

Consider the following method :



        
7条回答
  •  再見小時候
    2021-02-19 00:35

    Two problems:

    1 As others have pointed out, the generator is being seed multiple times.

    2 This is not a very good method to generate random numbers within a given range. (In fact it's very very bad for most generators )

    You are assuming that the low-order bits from the generator are uniformly distributed . This is not the case with most generators. In most generators the randomness occurs in the high order bits.

    By using the remainder after divisions you are in effect throwing out the randomness.

    You should scale using multiplication and division. Not using the modulo operator. eg

    my_number= start_required + ( generator_output * range_required)/generator_maximum;

    if generator_output is in [0, generator_maximum] my_number will be in [start_required , start_required + range_required]

提交回复
热议问题