Java 将数组中的数字范围映射为均匀随机1到100
我有5个骰子,每个骰子掷一次:假设结果是骰子[]={1,1,1,1} 这个dice[]数组是一个函数的输入Java 将数组中的数字范围映射为均匀随机1到100,java,c++,random,uniform,Java,C++,Random,Uniform,我有5个骰子,每个骰子掷一次:假设结果是骰子[]={1,1,1,1} 这个dice[]数组是一个函数的输入 int random (dice) { //do some thing with the dice values { 1, 1, 1, 1, 1 } ( as input from user ) //return a uniform random number between 1 to 100 } 规则:唯一的随机性来源是骰子数组中的值。如何将每个值转换为1到100
int random (dice) {
//do some thing with the dice values { 1, 1, 1, 1, 1 } ( as input from user )
//return a uniform random number between 1 to 100
}
规则:唯一的随机性来源是骰子数组中的值。如何将每个值转换为1到100中的一个数字,以便生成的值几乎一致
请帮助您可以将骰子上的数字分别乘以1、6、6^2、6^3、6^4。然后把它们加起来,取结果的最后两位数(也就是说,在最后做一个%100) 编辑(谢谢pjs)
作为最后一步,添加1,这样您可以得到介于1和100之间的答案,而不是介于0和99之间。听起来您试图在1到100之间的任意位置生成随机数。你可以检查C++ RAND()函数的工作原理,或者java数学。p> 没有。问题是“唯一的随机性来源是骰子数组中的值”。不要忘记添加一个,将范围从[0,99]移动到[1100]。有些垃圾箱比其他垃圾箱出现的频率稍高,但这是不可避免的,因为6**5不能被100整除。@pjs哦,关于+1的观点很好。我知道这并不是完全一致的,但这个问题指定了“几乎一致的一代”。是的,我也注意到了“几乎”。我仍然明确地检查了它,箱子计数要么是77要么是78,也就是说,它们只相差1。我看不出你还能做得更好。