zoukankan      html  css  js  c++  java
  • 【游戏算法】随机函数randN()的相互表示

    随机函数randN()的相互表示

    1.给一个rand6() 可以等概率返回1到6,只用这个函数写出可以等概率返回1到4的函数rand4()

    2.给一个rand5() 可以等概率返回1到6,只用这个函数写出可以等概率返回1到4的函数rand7()

    对于随机范围大的随机函数转换为随机范围小的随机函数(问题1)

    int rand6(){
      return rand()%6+1;
    }
    int rand4(){
      int temp;
      do{
        temp = rand6();
      }while(temp>4)//当大于4重新随机,能保证出现1~4的概率相同
    }
    

    对于随机范围小的随机函数转换为随机范围大的随机函数(问题2)

    int rand5(){
      return rand()%5+1;
    }
    int rand7(){
      int temp;
      do{
        temp = (rand5()-1)*5 + rand5()-1;
      }while(temp>=21)//保证出现0~20的概率相同,也就输出现0~6的概率相同
      return temp%7 +1
    }
    
  • 相关阅读:
    1104.整除问题
    1101.表达式求值(难)
    1102.最小子面积矩阵
    1095.2的幂次方
    1094.String matching
    1093.WERTYU
    1096.日期差值
    1092.Fibonacci
    车站解题程序
    阶乘之和解题程序
  • 原文地址:https://www.cnblogs.com/garychen97/p/13823909.html
Copyright © 2011-2022 走看看