Solidity - 将随机数存储到动态数组和 return 数组

Solidity - Store random numbers to a dynamic array and return the array

我使用混音 IDE。当我调用函数 get number 时,我得到了这个 0: uint256[]:
如何将其更改为 return 动态数组的数字?

pragma solidity ^0.4.24;

contract dynamicarray { 

    uint public constant MaxNumber = 50;

    uint[] numbers;

    function randomnumber() public view returns (uint){
        uint random = uint(sha3(block.timestamp)) % MaxNumber +1;
        for(uint i = MaxNumber; i > numbers.length; i++){
            numbers.push(random);  
            return  random;
        }
    }

    function getnumbers() public view returns(uint[]){
        return  numbers;
    }
}

该函数是一个 view,因此它不能修改状态。调用 randomnumber() 将 return 一个值,但不会更改 numbers 数组。

randomnumber() 中删除 view 修饰符,它会向数组添加一项。 (早期的 return 将防止循环重复。)

试试这个

pragma solidity ^0.4.24;

contract dynamicarray { 

    uint public constant MaxNumber = 50;

    uint[] numbers;

    function randomnumber() public returns (uint){
        uint random = uint(keccak256(block.timestamp)) % MaxNumber +1;
        for(uint i = MaxNumber; i > numbers.length; i++){
            numbers.push(random);  
            return  random;
        }
    }

    function getnumbers() public view returns(uint[]){
        return  numbers;
    }
}