242-solidity之伪随机数








solidity之伪随机数





我们怎么获取一个随机的uint?
Ethereum内部有一个散列函数keccak256
它用了SHA3版本
一个散列函数基本上就是把一个字符串转换为一个
256位的16进制数字
字符串的微小变化也会引起散列数据极大的变化

这个在Ethereum中有很多的应用
我们现在用它来创造一个伪随机数




其实在区块链中产生一个随机数一个很难的问题
我们这里使用的方法实际上并不安全
但是如果我们只是用来做一些简单的功能
那么这样做其实可以满足我们的需要





再说一下类型转换
例如

uint8 a = 5;
uint b = 6;

如果我们这样写
uint8 c = a * b;
这样是会报错的
因为a*b返回的是uint,而不是uint8
所以我们需要进行类型转换
uint8 c = a * (uint8)b;




现在我们来写简单的生成伪随机数的方法

uint modulus = 10**16;

function _generateRandom(string _str) private view returns (uint){

uint rand = uint( keccak256(_str) );

return rand % modulus;

}





 

你可能感兴趣的:(solidity)