Javascript 尝试用一些规则用1到2之间的数字填充9个空格
我试图用数字填充9个框,这些数字可以是数字1或数字2,因为数字2只能是4次,数字1应该填充剩下的5次。。。我知道这是一个简单的逻辑问题,但在某种程度上我无法达到我的目标。。。看看我的代码Javascript 尝试用一些规则用1到2之间的数字填充9个空格,javascript,Javascript,我试图用数字填充9个框,这些数字可以是数字1或数字2,因为数字2只能是4次,数字1应该填充剩下的5次。。。我知道这是一个简单的逻辑问题,但在某种程度上我无法达到我的目标。。。看看我的代码 <script type="text/javascript"> for (cicloTipo = 1; cicloTipo < 10; cicloTipo++) { var tipo = Math.floor((Math.random() * 2
<script type="text/javascript">
for (cicloTipo = 1; cicloTipo < 10; cicloTipo++) {
var tipo = Math.floor((Math.random() * 2) + 1);
document.write(tipo);
}
</script>
对于(cicloTipo=1;cicloTipo<10;cicloTipo++){
var tipo=数学地板((数学随机()*2)+1);
文件编写(tipo);
}
这里有一个解决方案,可以确保链中不超过4个2。
这意味着数字链可以包含从0 2到4 2的数字,其余为1
//2s计数器
var c1=c2=0;
对于(变量cicloTipo=1;cicloTipo<10;cicloTipo++){
var tipo=数学地板((数学随机()*2)+1);
//检查是否遇到了2和4 2s
如果(tipo==2){
如果(c2<4){
//增量计数器
c2++;
}否则{
tipo=1;
c1++;
}
}
//检查是否为1,是否遇到5个1
否则如果(tipo==1){
如果(c1<5){
//增量计数器
c1++;
}否则{
tipo=2;
c2++;
}
}
文件编写(tipo);
}
您可以从所需值的数组开始,然后洗牌该数组或从中随机选择值。有人说Math.random并不是真正的随机,但它应该足够好
下面使用splice来选择值,因此循环会向后迭代,因为每次拼接都会缩短源数组
函数getRandoms(){
对于(var seed=[1,1,1,1,1,2,2,2],result=[],i=seed.length;i;i--){
result.push(seed.splice(Math.random()*i | 0,1)[0]);
}
返回结果;
}
//显示结果的随机性
(功能(){
var s=新数组(30).fill('+');
var-r;
对于(变量i=9;i;){
document.getElementById(-i).textContent=s.join(“”);
}
var j=300;//运行次数
var delay=20;//默认延迟(毫秒)
功能显示(滞后){
延迟=延迟| |延迟;
getRandoms().forEach(函数(v,i,rand){
var el=document.getElementById(i);
如果(v==1){
el.textContent=el.textContent.slice(0,-1);
//如果用完“+”,请在每行中添加一些
如果(!el.textContent.length){
对于(var k=0;k<9;k++){
document.getElementById(k).textContent+='++';
}
}
}否则{
el.textContent+='+';
}
如果(i==0){
document.getElementById('msg').innerHTML='Remaining:'+j+
“”+”值:“+rand.join(”); } }); --j; 如果(j>0){ 设置超时(显示、延迟); } } 显示器(50); }()); //单次呼叫 //log(getRandoms().join())代码>
您具体遇到了哪些问题?数字生成(最多4个2和5个1)或写入框?只需定义一个包含4个2
s和5个1
s的数组,并在其上执行一个…或只是从数组中随机拼接值。不过,您不限制1的数量。