我如何在我的javascript代码中生成随机数

How do I generate a random number within my javascript code?

本文关键字:随机数 代码 javascript 我的      更新时间:2023-09-26

我正在使用一些第三方javascript在博客上的每个帖子中生成幻灯片。每个幻灯片必须有一个唯一的ID才能正常工作。我认为最简单的方法是在每个幻灯片加载到页面上时为其生成一个大的随机数。

下面是相关部分的代码片段,其中POSTID表示随机数。注意,必须在脚本下面的div中引用相同的随机数。

<script language="javascript" type="text/javascript">
        $(function() {
        $("#POSTID").webwidget_slideshow_dot({
        slideshow_time_interval: '',
        slideshow_window_width: '320',
        slideshow_window_height: '480',
        slideshow_title_color: '#17CCCC',
        soldeshow_foreColor: '#000',
        });
        });
</script>
<div id="POSTID" class="webwidget_slideshow_dot">
        <!-- some content goes here -->
</div>

任何帮助都将非常感激!

谢谢

Math.random()产生一个在[0,1)范围内的伪随机数。

返回[0,1)范围内的浮点伪随机数,即从0(包含)到但不包括1(不包含),然后您可以将其缩放到所需的范围。

如果你想要一个大整数,在[0,999999]范围内,你可以缩放和四舍五入。例如,

((Math.random() * 1e6) | 0)

将产生一个伪随机整数,其范围为[0,999999]。

要将伪随机ID附加到脚本中,您可以这样做:
<!-- Generate a random ID -->
<script>
var postID = 'post-' + ((Math.random() * 1e6) | 0);
</script>
<!-- Create a DIV with a generic ID. -->
<div id="POSTID">...</div>
<!-- Replace the DIV's ID with the generated ID -->
<script>$("#POSTID").attr('id', postID);</script>
<!-- Use the generated ID in a script. -->
<script>
(function() {
    $("#" + postID).webwidget_slideshow_dot(...)
})()
</script>

注意JavaScript的Math.random()不会产生不可猜的数字。只要你在网页中使用它作为GUID生成器,这是可以的,但是如果你把你的ID发送给服务器,你不应该依赖于不知道它的人。

一个简单的随机数有可能重复和打破你的逻辑。你不能用javascript创建一个"真正的"GUID,但你可以使用几个随机元素来伪造一个,使你的架构更加坚实。

为什么要使用随机数呢?只需使用计数器(var counter = 0),并在每次需要新ID时为其添加1。

$("#POSTID-" + counter++)

随机数是一种方法,它在其他答案中很好地涵盖了。

我使用不同的方法来获得唯一的值:Date对象的getTime()属性返回自1970年1月1日以来的毫秒数,因此在每次页面刷新时都是唯一的:

<div class="webwidget_slideshow_dot">

和JS:

$(function() {
    var now = new Date();
    var ts = now.getTime();
    $(".webwidget_slideshow_dot").each(function(index) {
        this.id = "webwidget_slideshow_" + (ts + index);
        $(this).webwidget_slideshow_dot({
           slideshow_time_interval: '',
           slideshow_window_width: '320',
           slideshow_window_height: '480',
           slideshow_title_color: '#17CCCC',
           soldeshow_foreColor: '#000'
        });
    });
});