随机彩票号码生成器

时间:2015-08-31 10:03:24

标签: javascript combinations

我想要做的是为希腊彩票游戏(Tzoker)生成6个随机数,5个在1-45范围内,1个在1-25 范围内。前5个数字应该是唯一的。通过按下按钮,我想使用jQuery将这些数字添加到div中(我有一些工作代码用于此部分)。

我认为使用循环很容易,但我发现自己无法检查生成的数字是否已经存在。循环只包含前5个数字,因为最后一个数字可以等于其他5个数字

5 个答案:

答案 0 :(得分:11)

让我给你一些更简单的解决方案。

  1. 列出1到45之间的所有数字。
  2. 使用Math.random(加减号,read the docs of Array.sort查找列表)作为比较函数对列表进行排序。您将按随机顺序获取列表。
  3. 从列表中取出5个第一项。
  4. 然后,当你已经拥有这些数字时,将它们全部放入你的div中。
  5. 通过这种方式,您不会将您的逻辑(获取数字)与您的演示文稿混合(将内容放入DOM中)。

    我将实施作为练习留给读者。 :)

答案 1 :(得分:4)

喜欢这个吗?



$(function() {
  $('button').on('click', function(e) {
    e.preventDefault();
    
    var numArray = [];
    
    while( numArray.length < 5 ) {
      var number = Math.floor((Math.random() * 45 ) + 1);
      if( $.inArray( number, numArray ) == -1 ) {
        numArray.push( number );
      }
    }
    numArray.push( Math.floor((Math.random() * 25 ) + 1) );
    $('div').html( numArray.join("<br />") );
  });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>Generate</button>
<div></div>
&#13;
&#13;
&#13;

答案 2 :(得分:3)

虽然这可能并不完全符合您的要求,但如果您使用lodash,这将非常简单:

Locale.setDefault(Locale.FRENCH); // Display the user interfaces in French
Locale.setDefault(Locale.Category.FORMAT, Locale.ENGLISH); // But the formatting in English

这就是functional programming如此酷的原因。您可以阅读Javascript Allonge以了解更多内容。

答案 3 :(得分:1)

http://jsfiddle.net/015d05uu/

var tzoker = $("#tzoker");
var results = $("#results");
tzoker.click(function() {
    results.empty();
    var properResults = [];
    var rand = 0;
    var contains = false;
    for (i = 1; i < 7; i++) {
        do 
        {
         (rand = Math.floor((Math.random() * (i != 6 ? 45 : 25)) + 1));
          contains = properResults.indexOf(rand) > -1;
        } while(contains)
        results.append("<br />", rand, "<br />");
        properResults.push(rand);
    }
});

以下是解决方案的主要思想。您可以将最大值定义为随机参数。 然后,在一个只包含所需数据的简单数组中检查项目是否存在。

答案 4 :(得分:1)

您可以使用从1maxValue生成随机数的常规函数​​,只有在它们不存在时才将它们添加到数组中。然后,要显示,循环遍历数组项并将它们附加到#randomNumbers

<强> HTML

<div id="randomNumbers"></div>

JS (使用jQuery)

var randomNumbersArray = [];

$(function() {
    generateRandomNumbers();
    displayRandomNumbers();
});

function generateRandomNumbers() {
    for (i = 0; i < 5; i++) {
        generateRandomNumberFrom1To(45);
    }
    generateRandomNumberFrom1To(25);
}

function generateRandomNumberFrom1To(maxValue) {
    var randomNumber;
    do {
        randomNumber = Math.ceil(Math.random() * maxValue);
    } while ($.inArray(randomNumber, randomNumbersArray) > -1);
    randomNumbersArray.push(randomNumber);
}

function displayRandomNumbers() {
    for (i in randomNumbersArray) {
        $("#randomNumbers").append(randomNumbersArray[i] + "<br>");
    }
}