我想使用Fisher Yates shuffle算法在“。(点)”之后对来自Math.random()
的每个整数进行混洗。我将它们分成字符串并使用Fisher Yates shuffle算法,但我仍然坚持如何将其转换回数字。
发件人: [“0”,“。”,“4”,“1”,“2”,“7”,“2”,“9”,“5”,“ 8“,”6“,”7“,”0“,”7“,”4“,”2“,”8“,”1“]
致: 0.4127295867074281
var randomNum = Math.random();
var stringNum = randomNum.toString();
var stringArray = stringNum.split("");
var i = stringArray;
var j;
var temp;
while (--i > 1) {
j = Math.floor(Math.random() * (i + 1));
temp = stringArray[j];
stringArray[j] = stringArray[i];
stringArray[i] = temp;
}
答案 0 :(得分:3)
#include <iostream>
#include <string>
#include <limits> // Needed for numeric_limits
using namespace std;
bool is_input_valid(int n);
int get_input();
int main() {
int n = get_input();
while ( !(is_input_valid(n)) )
{
n = get_input();
}
return 0;
}
int get_input() {
int n;
cout << "Error enter a number between 0 and 4000: \n"
cin >> n;
// If there was a problem reading the input, clear the input stream
// and try again.
if ( !cin )
{
cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
return get_input();
}
return n;
}
bool is_input_valid(int n)
{
return ( n >= 0 && n <= 4000 );
}
完整数字:
var str = "42";
var num = str * 1;
答案 1 :(得分:3)
首先加入数组,然后转换为数字Number(strArray.join(""))
var strArray = ["0", ".", "4", "1", "2", "7", "2", "9", "5", "8", "6", "7", "0", "7", "4", "2", "8", "1"];
var num = Number(strArray.join(""));
// this prints 0.4127295867074281
document.write(num);
&#13;
答案 2 :(得分:0)
我对逻辑感到惊讶,但对于每种语言都不是很多,但这里有一个基本的逻辑思想。请记住下面我正在连接
x = 0 y = 0
while(y> 10)
z =生成大于0且小于10的随机数;
x =&#34; x&#34; +&#34;。&#34; +&#34; z&#34;
结束
answer = x
回答=回答+ x