44.double dice roll
问题描述 解决骰子滚动后,我们已经知道如何将介于0.0和1.0之间的小数值转换为特定范围内的整数-例如,转换为介于1和6之间的数值,以模拟掷骰子。 但是,许多编程语言(例如C / C ++,PHP,Pascal)都使用随机数生成器,而随机数生成器仅给出从0到最大最大值之间的整数值。如何将这些数字转换为骰子点? 碰巧这种情况更简单。我们可以使用以下方法: 将随机值R除以N(我们想要的不同值的数量-例如,骰子为6),然后取剩余的值。该余数必须是0到N-1范围内的整数。 现在将其移至必要的范围,只需加1(即我们想要的范围的最小值)即可,您将获得介于1到N之间的值。 如果N与发生器的最大值相比不够小,则此方法的精度不太高。但是,对于大多数日常需求(扔硬币,掷骰子,洗牌等)都可以。 为了进行练习,让我们继续以下练习: 1输入数据将在第一行中包含测试用例(掷骰子)的数量。 2接下来的行将具有测试用例,每个用例都由两个随机整数组成,用于抛出一对骰子。这些数字是非负数(从0到大于2,000,000,000的某个值),应使用上面建议的算法将它们转换为骰子点。 3答案应包含一对骰子每次掷出的总和,值之间应用空格隔开 测试案例 input data: 7 193170145 1912748246 753156389 614113621 1824520917 53700559 1288077384