專案中需要動態隨機生成一些固定位數的隨機數,如8位,5位等。
之前看到的寫法是這樣
round(round(rand(),5)*100000)
這樣寫不太準確,有機率出現4位的情況,rand() 函式是取 0 ~ 1(無限接近) 的隨機函式
如果 某此隨機數取出的 是 0.05321
那麼這樣轉化出來的就是 5321 ,只有4位。
如果能用乙個函式包裝一下,取完數值後發現位數不對的時候,就補位進去就比較完美了。
下面是我改的乙個函式,不過缺點是 生成的函式位數不能超過20位。當然改一改也是可以了。
delimiter $$
use `prvecard`$$
drop function if exists `getrand`$$
create definer=`pecard`@`%` function `getrand`(counts integer) returns varchar(20) charset utf8
begin
declare stemp varchar(20);
declare stempcounts integer;
set stemp = concat( round(round(rand(),counts)*(pow(10,counts))),);
if(char_length(stemp)
set stempcounts = counts - char_length(stemp);
set stemp = concat(stemp, right(concat(pow(10,stempcounts),),stempcounts));
end if;
return stemp;
end$$
delimiter ;
生成指定位數的隨機數
輸入 要生成的隨機數的位數 輸出 隨機數 因為是32位系統,因此只能生成9位長度的10進製數。如果是10位的話可能會出現負數。溢位。c sharp view plain copy print?include include include include long myrand intn if n ...
golang生成指定位數的隨機數
參考 1.隨機數 隨機數,是使用乙個確定性的演算法計算出來隨機數序。在程式開發中經常需要產生隨機數,如隨機數驗證碼登陸 作為唯一身份標識資料等等。2.rand庫 golang中產生隨機數主要有兩個包,分別是 math rand 和 crypto rand math rand 的rand包實現了偽隨機...
golang生成指定位數的隨機數
1.隨機數 隨機數,是使用乙個確定性的演算法計算出來隨機數序。在程式開發中經常需要產生隨機數,如隨機數驗證碼登陸 作為唯一身份標識資料等等。2.rand庫 golang中產生隨機數主要有兩個包,分別是 math rand 和 crypto rand math rand 的rand包實現了偽隨機數生成...