zoukankan      html  css  js  c++  java
  • 概率抽奖

    [TestMethod]
    public void CheckTrue()
    {
    var reg = CommonTools.CheckTrue(1.001M);
    }
     
    /// <summary>
    /// 根据中奖率判断是否中奖
    /// </summary>
    /// <param name="percent">中奖率(0~100)</param>
    /// <returns></returns>
    public static bool CheckTrue(decimal percent)
    {
    bool result = false;
    if (percent >= 100)
    {
    result = true;
    }
    else if (percent <= 0)
    {
    result = false;
    }
    else
    {
    string strPercent = percent.ToString();
    int rndCount = 0;//随机数个数
    int rndMax = 0;//随机数最大值
    int rand = 0;//抽中数
    if (strPercent.IndexOf('.') == -1)//无小数位
    {
    rndMax = 100;
    rndCount = (int)percent;
    var rndList = GenerateRandom(rndMax, rndCount,false);
    rand = rnd.Next(rndMax);
    result = rndList.Contains(rand);
    }
    else
    {
    int accCount = strPercent.Length - strPercent.IndexOf('.')-1;
    //rndMax= percent>=1? (int)Math.Pow(10, strPercent.Length+1): (int)Math.Pow(10, accCount+1);
    rndMax = (int)Math.Pow(10, accCount + 2);
    rndCount = (int)(percent * (int)Math.Pow(10, accCount));
    var rndList = GenerateRandom(rndMax, rndCount, false);
    rand = rnd.Next(rndMax);
    result = rndList.Contains(rand);
    }
    }
    return result;
    }
     
    public static List<int> GenerateRandom(int iMax, int iNum,bool isRepeat=true)
    {
    long lTick = DateTime.Now.Ticks;
    List<int> lstRet = new List<int>();
    for (int i = 0; i < iNum; i++)
    {
    Random ran = new Random((int)lTick * i);
    int iTmp = ran.Next(iMax);
    if (!isRepeat)
    {
    if (lstRet.Contains(iTmp))
    {
    i--;
    lTick += (new Random((int)lTick).Next(978));
    continue;
    }
    }
    lstRet.Add(iTmp);
    lTick += (new Random((int)lTick).Next(978));
    }
    return lstRet;
    }
  • 相关阅读:
    668. Kth Smallest Number in Multiplication Table
    658. Find K Closest Elements
    483. Smallest Good Base
    475. Heaters
    454. 4Sum II
    441. Arranging Coins
    436. Find Right Interval
    410. Split Array Largest Sum
    392. Is Subsequence
    378. Kth Smallest Element in a Sorted Matrix
  • 原文地址:https://www.cnblogs.com/maodan/p/6702497.html
Copyright © 2011-2022 走看看