Mysql 生成固定位數的隨機數

2021-12-29 20:06:04 字數 896 閱讀 6802

專案中需要動態隨機生成一些固定位數的隨機數,如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包實現了偽隨機數生成...