【问题标题】:A simple algorithm to find value from sequence for a Random number? [duplicate]一种从随机数序列中查找值的简单算法? [复制]
【发布时间】:2015-03-21 05:01:35
【问题描述】:

我想为序列创建一个通用算法(我没有将序列存储在任何地方).. 如果

1=A

2=B

3=C

.

.

.

26=Z

27=AA

28=AB

29=交流

30=AD

获取任意随机数值的代码应该是什么?例如 333

【问题讨论】:

  • 26 * 2 + 1需要AAA还是BA?同样,您希望 26 * 26 + 1 是 AAA 还是 AAAAAAAAA ...?
  • @jdphenix BA 和 AAA
  • @Danbopes 没有任何标记为答案..

标签: java javascript algorithm


【解决方案1】:

这里有一个很好的例子HERE ..

function getCharCode(displayNumber){
    var ordA = 'A'.charCodeAt(0);
    var ordZ = 'Z'.charCodeAt(0);
    var len = ordZ - ordA + 1;

    var returnSequence = "";
    while(displayNumber >= 0) {
        returnSequence = String.fromCharCode(displayNumber % len + ordA) + returnSequence; // (displayNumber % 26 + 65) +""
        displayNumber = Math.floor(displayNumber / len) - 1; //(displayNumber / 26) - 1
    }
    return returnSequence;
}

或者我将其修改为..

function getCharCode(displayNumber){
    var returnSequence = "";
    while(displayNumber >= 0) {
        returnSequence = String.fromCharCode(displayNumber % 26 + 65) + returnSequence;
        displayNumber = Math.floor(displayNumber / 26) - 1;
    }
    return returnSequence;
}

【讨论】:

    【解决方案2】:

    试试

    var arr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("")
    , i = -1
    , n = -1
    , len = 0
    , max = arr.length + arr.length * arr.length
    , res = {};
    
    do {
      if (n === arr.length -1) {
        n = -1;
        ++i;
      };
      if (len < arr.length * 2 - 1) {
        res[++len] = len < arr.length + 1 ? arr[++n] : res[1] + arr[++n];
      } else {
        res[++len] = arr[i] + arr[++n]
      };
    } while (len < max);
    
    console.log("333:" + res[333], res);

    【讨论】:

      猜你喜欢
      • 2010-10-18
      • 2010-12-05
      • 2011-11-12
      • 2015-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多