2017-11-25 240 views
-1

我正在为五年级的Flashcard计划来练习他们的数学技能。无论何时他们到达程序的分割部分,它都不会生成均匀分割的数字。我已经生成了两个数字,像这样:在C++的特定范围内生成随机均匀可分的数字?

int divisor_one = 1+rand()%5 * 2; 
    int divisor_two = 1+rand()%5 * 2; 

我想通过乘以由两个,但只给出偶数,但我错了。它会生成一个5,如下所示。

******************************** 
      Division Flashcards 
    ******************************** 
        3 
        5 
       _____ 

显然,这两个数字并不能被整除。我怎样才能生成随机均匀分割数字?

+5

好像你将随机数乘以2,然后加1.'(1 + rand()%5)* 2;'可能会更好。 –

+0

这确实使它只产生偶数,但它不会使它们均匀**可分**。 –

+0

'>>但它并不能使它们均匀分割,那么什么是可以整除的数字呢? –

回答

6

这是我脑子里想的:

int divisor_one = 1+rand()%5 * 2; 
int result = 1+rand()%5 * 2; 
int divsor_two = divisor_one * result; 

这样,你要确保结果始终是一个甚至产品的任何因素都。