代码之家  ›  专栏  ›  技术社区  ›  Crash893

简单rand()问题

  •  1
  • Crash893  · 技术社区  · 16 年前

    我需要一个随机的4位数

    现在我用的是兰特(10009999),它总是给我一个4位数的数字,但我尽可能地消除了0000-0999。

    你如何填充一个随机数?

    (这最终也将添加到字符串中,是否需要将int强制转换为字符串?)

    谢谢

    5 回复  |  直到 16 年前
        1
  •  12
  •   Etan bbum    16 年前

    在像PHP这样的脚本语言中,您不必在99%的情况下进行强制转换。

    填充可以使用

    sprintf("%04u", rand(0, 9999));
    

    解释

    第一个论点 sprintf 指定格式

    • % 在第二、第三、第四等论点中停留。第一 % 被第二个参数替换,第二个参数 % 第三个等等。
    • 0 为填充的行为留下 向左。
    • 4 保留“至少打印4个字符”
    • u 保留为无符号整数。
        2
  •  6
  •   Joey Gumbo    16 年前
    sprintf("%04d", rand(0,9999))
    

    应该做你想做的

        3
  •  3
  •   James Cronen    16 年前

    又快又脏…怎么办?

    rand(10000,19999)
    

    最后四位数:

    substr(rand(10000, 19999), 1, 4)
    
        4
  •  3
  •   Alix Axel    16 年前
    str_pad(mt_rand(0, 9999), 4, '0', STR_PAD_LEFT);
    

    使用mt_rand()而不是rand(),这样更好。

        5
  •  1
  •   Greg    16 年前

    你可以使用 str_pad() sprintf() 设置字符串格式:

    $rand = rand(0, 9999);
    $str1 = str_pad($rand, 4, '0', STR_PAD_LEFT);
    $str2 = sprintf('%04u', $rand);
    
    推荐文章