紅包金額隨機數的生成


 <form>
紅包個數:<input type="text" name="count" id="count" required style="height: 20px;"> <br>
總金額(元):<input type="text" name="amount" id="amount" required style="height: 20px;"><br>
<input type="button" id="submit" value="獲取紅包金額">
</form></p>

<div id='result'></div>

<script src="https://www.lijinma.com/javascripts/libs/jquery.min.js"></script>
<script>

$('#submit').click(function(){
  function getRandomInt(min, max) {
    return Math.floor(Math.random() * (max - min)) + min;
  }

  function getNextItemKey(currentKey, count) {
    if (currentKey > count) {
      throw 'Error: currentKey > count';
    }
    if (currentKey != count) {
      return currentKey + 1;
    } else {
      return 1;
    }
  }
  
  var count = $('#count').val();
  var amount = $('#amount').val();
  if (!count) {
    alert('紅包個數必須填寫');
    return false;
  }
  if (!amount) {
    alert('總金額必須填寫');
    return false;
  }
  if (amount / count < 0.01) {
    alert('單個紅包金額不可低於0.01元,請重新填寫金額');
    return false;
  }
  amount = amount * 100;
  var items = [];
  for (var i = 0; i < count; ++ i) {
    items[i] = getRandomInt(1, 100);
  }
  var itemAmounts = [];
  var sum = items.reduce(function(pv, cv) { return pv + cv; }, 0);
  var currentAmount = 0;
  for (var i = 0; i < count; ++ i) {
    if (i !== count - 1) {
      itemAmounts[i] = Math.floor(items[i] / sum * amount);
      currentAmount += itemAmounts[i];
    } else {
      itemAmounts[i] = amount - currentAmount
    }
  }
  
  for (var i = 0; i < count; ++ i ) {
    if (itemAmounts[i] > 0) {
      continue;
    }
    var nextKey = getNextItemKey(i, count);
    var diff = 1 - itemAmounts[i];
    itemAmounts[i] = 1;
    itemAmounts[nextKey] -= diff;
  }
  
  for (var i = 0; i < count; ++ i ) {
    itemAmounts[i] = itemAmounts[i] / 100;
  }
  
  alert(itemAmounts.join('')+'');
  
});
</script>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM