随机产生数组长度是80的序列

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <script>
        var str = ‘‘;
        var add =[1,2,3,4,5,6,8,9];
        var newArr = [1,2,3,4,5,6,7,8,9,-1,-2,-3,-4,-5,-6,-7,-8,-9];
        function getN(arr){
            return Math.floor(Math.random() * arr.length + 1)-1;
        }
        var resultArr = [];
        var log = ‘‘;
        function randNum(){
            for(var i =0;i<80;i++){
                var num = newArr[getN(newArr)];//随机取了一个数字 Math.abs(aaa);
                if(num < 0){//负数
                    if(inArray(Math.abs(num),resultArr) != -1 && (repeatNum(num,resultArr) != repeatNum(Math.abs(num),resultArr))){//正数存在,而且正负是不成对
                        resultArr.push(num);
                    } else {//正数不存在
                        resultArr.push(-num);
                    }
                } else {//正数
                    if((repeatNum(-num,resultArr) == repeatNum(Math.abs(num),resultArr))){//正数存在,而且正负成对
                        resultArr.push(num);
                    } else {//正数不存在
                        resultArr.push(-num);
                    }
                }
            }
            str += resultArr.join(‘,‘) + ‘|‘ + check(resultArr) + ‘<br>‘;
        }

        function getArr(n){
            for(var i = 0; i<n; i++){
                resultArr.length =0;
                randNum();
            }
        }

    //查找索引
    function inArray(t,arr){
        if(arr.indexOf){
            return arr.indexOf(t);
        }
        for(var i=arr.length;i--;){
            if(arr[i]===t){
                return i*1;
            }
        };
        return -1;
    }

    //删除数组某一个
    function deleInArray(n,arr){
        if(n<0) return false;
        arr.splice(n,1);
    }

    //重复次数
    function repeatNum(t,arr){
        var times = 0;
        for(var i = 0;i<arr.length;i++){
            if(t == arr[i]){
                times ++;
            }
        }
        return times;
    }

    function addFunc(){
        var newNum = newArr[getN(add)];
        if(inArray(newNum,resultArr) == -1){//不存在
            resultArr.push(newNum);
        } else {
            addFunc();
        }
    }

    //检查数据
    function check(arr){
        var maxNum = 0;
        var str = ‘‘;
        for(var i = 0; i<arr.length; i++){
            maxNum += arr[i];
            if(maxNum >= 45){
                str = ‘不可用‘ + ‘|‘ + ‘第‘ + i + ‘个数字‘ + ‘|‘ + ‘数字是:‘ + arr[i];
                break;
            } else {
                str = ‘可用‘;
            }
        }
        return str;
    }
    getArr(100);
    document.write(str);
    </script>
</body>
</html>

目的是产生,数组长度是80的序列。正负相抵消,最后只剩下1到9就当作是中奖!注意要先产生正的才能出现负的!

时间: 2024-10-07 15:17:01

随机产生数组长度是80的序列的相关文章

结对编程之数组长度要求和大数溢出

1.题目: 返回一个整数数组中最大子数组的和. 2.要求: 1)要求程序必须能处理1000个元素: 2)每个元素都是int32类型的. 3.设计思路: 处理1000个元素时让用户自己输入想要的数组长度,看看运行时出处理时间的长短,再在源程序中改善这一问题. 处理大数溢出时,由于随机函数生成的数不算太大,我们尽量让其最终存入数组的元素接近最大范围,进而求和时才可能出现大数溢出的情况. 4.源代码: 1 #include<iostream> 2 #include<stdlib.h> 3

C++ 数组长度 以及 数组名作为参数 传递给函数

在看排序,首先是插入排序,思路理清后想用代码实现,然后问题来了: 如何求数组长度? 如果没记错,在Java中应该是有直接可用的方法的, Python中(序列)也有.len,在C/C++中,字符串倒是有strlen() (需要#include <string.h>) 一个办法是用 sizeof() 一.首先定义数组 int array[] = {18,10,15,7,1}; 一开始想都没想就直接在子函数里面 int array_length(int a[]){ int len = sizeof(

随机获取数组元素 和 数组元素随机排序

<script type="text/javascript"> //随机取得数组中的一个元素 function Rand(){ var arr=[11,22,33,44]; var a=Math.floor(Math.random()*arr.length);//Math.floor(Math.random()); //Math.floor()方法执行的是向下取整计算,它返回的是小于或等于函数参数,并且与之最接近的整数. //alert(Math.random()*arr.

Java初学者:数组,得到数组长度

得到数组的长度在java里是很简单的,那就是:数组名.length,我们来看一个简单的程序就可以了,如下: 这个就是上次的那个程序,我只是把for后面那个4改成了a.length,也许有人要问了,那为什么非要求出数组的长度呢?数组在起始的时候,长度不就 已经确定了吗?是的,但是有的时候还是会出现那种,我们不知道数组长度的情况,比如,一个函数的参数是数组的时候(我们以后会说到函数),再比如,如果数 组的长度是由用户输入的呢?下面我们就来做这样一个程序,让用户来输入一个整型数据作为数组的长度,然后创

前端面试题:高效地随机选取数组中的元素

有前端题目大概是这样的:考虑到性能问题,如何快速从一个巨大的数组中随机获取部分元素. 比如有个数组有100K个元素,从中不重复随机选取10K个元素. 为了演示方便我们将数据简化,先给出方案最后再用大点的数据来测试性能的对比. 常规解法 常规做法倒也不难,生成一个0到数组长度减1的随机数,这个数也就是被选中元素在原数组中的下标,获得该元素后将值保存到另一个数组同时通过数组的splice方法将该元素从原数组中删除,以保证下次不会重复取到. 按以上思路,代码大概就是这样的: //元素总数,为了方便演示

递归算法实现,数组长度为 5 且元素的随机数在 2-32 间不重复的值

拆分问题: 数组长度为 5: 生成 2-32 之间的随机数: 向数组中插入数值时,如果已存在则重新生成: 采用递归的方式,而非循环语句实现. function getRandom(max, min) { max = max + 1; min = min || 0; return Math.floor(Math.random() * (max - min)) + min; } function insertArr(arr, length, min, max) { if (arr.length <

未排序数组中累加和为给定值的最长子数组长度

题目:给定一个数组arr,该数组无序,但每个值均为正数,再给定一个正数k.求arr得所有子数组中所有元素相加和为k的最长子数组长度. 解答:最优解可以做到时间复杂度为o(n),额外空间复杂度为o(1).首先用两个位置来标记子数组的左右两头,记为left和right,开始时都在数组的最左边(left=0,right=0).整体过程如下: 1.开始时变量left=0,right=0,代表子数组arr[left......right]. 2.变量sum始终表示子数组arr[left......righ

C++ 取得数组长度

C++中没有提供 直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取长度,那么对于其他类型的数组如何获取他们的长度呢?其中一种方法是使 用sizeof(array) / sizeof(array[0]), 在C语言中习惯上在 使用时都把它定义成一个宏,比如#define GET_ARRAY_LEN(array)  (sizeof(array) / sizeof(array[0])) . 而在C++中则可以使用模板 技术定义一个函数,比如: template <clas

C++数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。(牛客剑指offer)

///////////////////////////////////////////////////////// //数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字. //例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}. //由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. #include <iostream> using namespace std; int Grial(int a[],int n) { if(n==0)return -1;