如何在javascript中每5个数字的范围内生成随机数

如何在javascript中每5个数字的范围内生成随机数,javascript,html,Javascript,Html,我希望在315的范围内每5个随机数。 所以结果应该是这样的: 2(从1到5) 7(从6日至10日) 11(从11日至15日) 16(从16岁到20岁) 24(从21日至25日) 29(从26日至30日) 33(从31日至35日) 36(从36岁到40岁)…依此类推到315岁 为了获得更清晰的视图,我提供了3个示例序列: 1,6,14,20,23,27,31,39 3,8,15,16,22,29,32,37 1,10,14,19,21,30,33,36 我尝试了以下代码: <button o

我希望在315的范围内每5个随机数。 所以结果应该是这样的:

2(从1到5)

7(从6日至10日)

11(从11日至15日)

16(从16岁到20岁)

24(从21日至25日)

29(从26日至30日)

33(从31日至35日)

36(从36岁到40岁)…依此类推到315岁

为了获得更清晰的视图,我提供了3个示例序列:

  • 1,6,14,20,23,27,31,39
  • 3,8,15,16,22,29,32,37
  • 1,10,14,19,21,30,33,36
  • 我尝试了以下代码:

    <button onclick="document.getElementById('demo').innerHTML = getRndInteger(1,5); document.getElementById('demo1').innerHTML = getRndInteger(6,10)">Click Me</button>
    
    <p id="demo"></p>
    <p id="demo1"></p>
    
    <script>
    function getRndInteger(min, max) {
      return Math.floor(Math.random() * (max - min + 1) ) + min;
    }
    </script>
    
    点击我
    

    函数getRndInteger(最小值、最大值){ 返回Math.floor(Math.random()*(max-min+1))+min; }
    但对于这一点,我需要为所有63个间隔创建。 有人知道如何简化吗? 在315之前,我需要5个数字的每一个数字。
    有人能帮我吗?

    你可以试试这样的东西(我没有测试,但我想到了):

    
    函数randomIntFromInterval(最小,最大){//min和max包括在内
    var i=最小值;
    变量数=[]
    对于(i;i
    假设第一个数字可以是从1到315的任何整数

    之后,后面的数字等于前一个数字+5

    var firstNumber=0;
    函数randomIntFromInterval(最小值、最大值){
    var randomNumber=Math.floor(Math.random()*(max-min+1)+min);
    var结果=[randomNumber];
    
    而(randomNumber+5您可以以5的增量迭代外部范围,并取最大5的随机偏移量


    for(设i=0,l=315;i这里有一种简单的方法,可以在5的范围内(包括前面提到的边界)生成随机数,直到达到最大值

    运行示例:

    函数随机整数(最小值、最大值){
    返回Math.floor(Math.random()*(max-min+1))+min;
    }
    函数示例(){
    var最大值=21;
    var generatedNumbers=[];
    
    对于(var iteration=1;iteration+1来说,编程的本质是将问题分解为更小的部分,然后构建完整的解决方案

    在这种情况下,我们可以这样分解问题:

    Math.floor(1 + 4 * Math.random())
    
  • 创建一组63个乐队:1到5,6到10,等等
  • 在每个波段中选择一个随机数
  • 对于第2部分,您已经有了问题中显示的
    getRndInteger
    函数:

        function getRndInteger(min, max) {
          return Math.floor(Math.random() * (max - min + 1) ) + min;
        }
    
    第1部分可以通过几种方式完成,但最容易理解的可能是一个简单的
    while
    循环:

    min=1;
    设max=5;
    
    (max你可以这样想。当Math.random()生成0时,得到1。而Math.random()生成1时,得到5。所以你可以这样编写这个函数:

    Math.floor(1 + 4 * Math.random())
    
    所以你可以这样生成


    for(设i=0;i必须循环以查找所需范围内的所有随机数,更改每个循环中的最大值和最小值。由于所有数字都是请求的,因此必须将它们添加到数组中

    <button onclick="document.getElementById('demo').innerHTML = randomIntFromInterval()">Click Me</button>
    <p id="demo"></p>
    
    
    function randomIntFromInterval() { 
    // min and max included 
      let min=0;
      let max=5;
      let numberOfList=[];
      for(let i=0;i<63;i++){
         let randomNumber= Math.floor(Math.random() * (max - min  +1) + min);
         numberOfList.push(`${randomNumber}`);
         min=min+5;
         max=max+5;
      } return numberOfList;
    }
    
    点击我
    

    函数randomIntFromInterval(){ //包括最小值和最大值 设min=0; 设max=5; 设numberOfList=[]; 对于(设i=0;i,为了简单性和加密安全性:



    for(var i=1;i)“每5个数字”是什么意思?NinaScholz的意思是1到5、6到10、11到15、16到20等等。第一个数字可能是
    1
    2
    或任何数字。然后,下一个数字就是
    上一个数字+5
    ?这回答了你的问题吗?我肯定这很令人沮丧,因为这在你的头脑中是清楚的,但你需要深呼吸,然后重新思考更清楚地解释你想做什么。提供多个可能的序列会很有用,这样我们就不会在一个示例中被意外模式误导。哦,不,结果可能是
    3 10 17
    ?不是每次都是
    +5
    :(@StackOverFlow,不必。请看op的示例。我刚刚运行了几次,其中一次包括序列“22,27,36,42”我不认为它符合OP的要求——注意中间的9跳。哦,我现在看到了错误:你在每个循环中加上一个固定的偏移量5和一个随机的偏移量,每个时间都在5到10之间,这永远不会产生例子序列2,7,11。(第二个和第三个数字之间的偏移量为4)。对问题进行了编辑,以澄清序列不是每次加5。@StackOverFlow谢谢,但我需要一系列数字。单击一次,所有序列都应该显示出来。@KhushbuVaghela,正如我在回答中提到的,始终分解您的问题:序列是否一次输出一个项目,推入数组,构建into一个带逗号的字符串;无论它是由点击触发的,还是在页面加载时触发的,或是在时钟敲响12点时触发的……所有这些都是您可以根据本页面上的任何建议进行更改的详细信息。请先确定算法的正确性,然后您可以随心所欲地重用它。@IMSoP是的,但该系列仍然不是从1开始到5!而且它始终是正确的我加了5个,但我没有want@KhushbuVaghela当然,我不是说这一定是正确的算法,我只是想强调将算法与它们的使用方式分开看待的重要性。为什么你要排除1和5?我在任何地方都看不到问题中提到的。是的,谢谢,编辑了它。也许这些例子让我觉得f it:P现在我看到OP添加了包括边框数字在内的示例;)谢谢,这就是我想要的@Deepak@Phong这是预期的结果。希望您阅读OP提供的所有示例:)@KhushbuVaghela您需要用生成的数字附加字符串吗?如果需要,只需将生成的数字存储在一个变量中,并在将其推送到数组之前附加字符串为什么从65开始到70?我不确定。似乎有问题