天道酬勤,学无止境

Random Time Generator for time betweeen 7AM to 11AM [closed]

I am creating a test file and I need to fill it with random times between 7AM to 11AM. Repeating entries are OK as long as they aren't all the same

I'm also only interested in HH:MM (no seconds)

I don't know where to start. I did Google before posting and I found an interesting search result

www.random.org/clock-times/

Only issue is that all times "randomly" generated are in sequential order. I can put it out of sequence once but I need to generate 100 to 10,000 entries.

I am hoping to create a WinForm C# app that will help me do this.

评论

Calculate the number of minutes between your start and stop times then generate a random number between 0 and the maximum number of minutes:

Random random = new Random();
TimeSpan start = TimeSpan.FromHours(7);
TimeSpan end = TimeSpan.FromHours(11);
int maxMinutes = (int)((end - start).TotalMinutes);

for (int i = 0; i < 100; ++i) {
   int minutes = random.Next(maxMinutes);
   TimeSpan t = start.Add(TimeSpan.FromMinutes(minutes));
   // Do something with t...
}

Notes:

  • You should only create one random object, otherwise you will get many duplicates in a row.
  • The start time is inclusive but the end time is exclusive. If you want to include the end time too, add 1 to maxMinutes.

Create a DateTime value for the lower bound, and a random generator:

DateTime start = DateTime.Today.AddHours(7);
Random rnd = new Random();

Now you can create random times by adding minutes to it:

DateTime value = start.AddMinutes(rnd.Next(241));

To format it as HH:MM you can use a custom format:

string time = value.ToString("HH:mm");

Here is a generic method to give you a random date between a given start and end date.

public static DateTime RandomDate(Random generator, DateTime rangeStart, DateTime rangeEnd)
{
    TimeSpan span = rangeEnd - rangeStart;

    int randomMinutes = generator.Next(0, (int)span.TotalMinutes);
    return rangeStart + TimeSpan.FromMinutes(randomMinutes);
}

If you use something like this a lot you could make it an extension method on Random.

Create a Random object and use that to create a new DateTime

Random rand = new Random();
//Note that Random.Next(int, int) is inclusive lower bound, exclusive upper bound
DateTime myDateTime = new DateTime(2012, 11, 27, 
    rand.Next(7, 11), rand.Next(0, 60), 0);

Then use the time output where you want it.

List<DateTime> randomTimes = new List<DateTime>();
Random r = new Random();
DateTime d = new DateTime(2012, 11, 27, 7, 0, 0);

for (int i = 0; i < 100; i++)
{
    TimeSpan t = TimeSpan.FromSeconds(r.Next(0, 14400));
    randomTimes.Add(d.Add(t));
}

randomTimes.Sort();

The number 14400 is the number of seconds between 7 AM and 11 AM, which is used as the basis for random number generation.

The randomTimes list can be used with DateTime formatting to achieve the desired output format, like:

Console.WriteLine("HH:mm", randomTimes[0]);

var random = new Random();
var startDateTime = new DateTime(2000, 1, 1, 7, 0, 0, 0);
var maxDuration = TimeSpan.FromHours(4);

var values = Enumerable.Range(0, 100)
    .Select(x => {
        var duration = random.Next(0, (int)maxDuration.TotalMinutes);
        return startDateTime.AddMinutes(duration).ToString("HH:mm");
    })
    .ToList();

values = values.Distinct().ToList();

Console.WriteLine("{0} values found. Min: {1}, Max: {2}", values.Count, values.Min(), values.Max());

Throwing my hat in the ring :)

Edit: It's slightly embarrassing to see so many answers for effectively is a dead simple question. Anyway, nice to see different styles. Reading the question I was surprised to see the OP ask to create Win Forms app to do this. The task seemed so straight forward, I wanted to write the solution in LinqPad!

A simple option (picking the hour and minute as random ints):

Random r = new Random();

//pick the hour
int h = r.Next(7,12);

//pick the minute
int m = 0;
if(h < 11)
    m = r.Next(0,60);

//compose the DateTime
DateTime randomDT = new DateTime(year, month, day, h, m, 0);

Something like this:

private static Random rng = new Random();
public IEnumerable<DateTime> RandomDateTimes( DateTime lowerBound , DateTime upperBound , int count )
{
    TimeSpan period = upperBound - lowerBound ;

    if ( period <= TimeSpan.Zero || period > new TimeSpan(1,0,0,0) ) throw new ArgumentException();
    if ( count < 0 ) throw new ArgumentException() ;

    int rangeInMinutes = (int) period.TotalMinutes ; // period is 0 through 1440

    for ( int i = 0 ; i < count ; ++i )
    {
        int offset = rng.Next(rangeInMinutes) ;
        yield return lowerBound.AddMinutes(offset) ;
    }
}
public IEnumerable<DateTime> OrderedRandomDateTimes( DateTime lowerbound , DateTime upperBound , int count )
{
    yield return RandomDateTimes( lowerbound , upperBound , count ).OrderBy( x = x ) ;
}

Maybe I am missing something but isn't it as simple as this...

Random rand = new Random();

// Range can be any number from 100 to 10000
Enumerable.Range(1, 10000).Select(v => TimeSpan.FromMinutes(rand.Next(420, 661)))

If you wanted to make it simplier to understand the numbers you could expand it out....

Random rand = new Random();
int startTime = Convert.ToInt32(TimeSpan.FromHours(7).TotalMinutes);
int endTime = Convert.ToInt32(TimeSpan.FromHours(11).TotalMinutes) + 1;     // To make 11:00 inclusive

Enumerable.Range(1, 10000).Select(v => TimeSpan.FromMinutes(rand.Next(startTime, endTime))).Dump();

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • C ++ 11中的随机数生成:如何生成,它如何工作? [关闭](Random number generation in C++11: how to generate, how does it work? [closed])
    问题 在这里很难说出要问什么。 这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,因此不能以目前的形式合理地回答。 如需帮助澄清此问题以便可以重新打开,请访问帮助中心。 9年前关闭。 最近,我遇到了一种在C ++ 11中生成随机数的新方法,但是无法消化我所读到的论文(这是什么引擎,数学术语,如“分布” ,即“产生的所有整数同等可能”)。 所以任何人都可以解释一下 这些是什么? 他们是什么意思? 怎么产生的? 他们如何工作? ETC 您可以在一个有关随机数生成的常见问题解答中将其全部调用。 回答1 这个问题太宽泛,无法给出完整的答案,但让我挑几个有趣的观点: 为什么“同样可能” 假设您有一个简单的随机数生成器,该生成器以相等的概率生成数字0、1,...,10(将其视为经典的rand() )。 现在,您需要0、1、2范围内的随机数,每个概率均等。 您的下意识反应是采用rand() % 3 。 但是,等等,余数0和1比余数2更频繁地出现,所以这是不正确的! 这就是为什么我们需要适当的分布,该分布需要一个统一的随机整数源并将其转变为我们想要的分布,例如示例中的Uniform[0,2] 。 最好把它留给一个好的图书馆! 引擎 因此,所有随机性的核心是一个好的伪随机数生成器,该生成器生成一个在一定间隔内均匀分布的数字序列,理想情况下,其周期很长。 rand()的标准实现通常不是最好的
  • 即使每天的特定时间过去,如何在每天的特定时间发送localNotification?(How to send a localNotification at a specific time everyday, even if that time has passed?)
    问题 我有这段代码,它每天早上7点运行一个通知,它获取当前日期,然后在到达设定的时间时运行该通知,我的问题是,如果时间已经超过了设定的运行时间,那么它将每天在用户当前时间不是我早上7点的时间,这是我的代码 var dateFire: NSDateComponents = NSDateComponents() var getCurrentYear = dateFire.year var getCurrentMonth = dateFire.month var getCurrentDay = dateFire.day dateFire.year = getCurrentYear dateFire.month = getCurrentMonth dateFire.day = getCurrentDay dateFire.hour = 7 dateFire.minute = 0 dateFire.timeZone = NSTimeZone.defaultTimeZone() var calender: NSCalendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)! var date: NSDate = calender.dateFromComponents(dateFire)! var
  • 真随机数生成器(True random number generator [closed])
    问题 关闭。 此问题不符合堆栈溢出准则。 它当前不接受答案。 想要改善这个问题吗? 更新问题,使它成为Stack Overflow的主题。 5年前关闭。 改善这个问题 抱歉,这不是一个“真实”的问题,但是有一段时间我记得在这里看到过一篇有关随机化随机化器以生成真正的随机数,而不仅仅是伪随机数的文章。 如果我搜索它,我看不到。 有人知道那篇文章吗? 回答1 我相信那是在thedailywtf.com上-即。 不是您想做的事。 无论调用多少次randomize(),都不可能从伪随机数中获得真正的随机数。 您可以从特殊硬件获得“真”随机数。 您还可以从鼠标移动和类似的东西收集熵。 回答2 我不得不不同意这个问题的很多答案。 可以在计算机上收集随机数据。 如果不能,SSL,SSH和VPN将不安全。 软件随机数生成器的工作方式是存在一个从许多不同位置收集的随机数据池,例如时钟漂移,中断定时等。 这些方案的诀窍在于正确估计熵(随机性的时髦名称)。 只要您正确估计熵,来源是否为偏差都无关紧要。 为了说明这一点,我在此注释中击中字母e的机会比z的机会高得多,因此,如果我将键中断用作熵的来源,则可能会产生偏差-但仍然存在一些随机性在该输入中。 您无法确切预测本段中接下来的字母顺序。 您可以从这种不确定性中提取熵,并将其用作随机字节的一部分。
  • 批次中的随机发生器(Random generator in the batch)
    问题 我有一个蝙蝠文件 @echo %RANDOM% 并使用命令行执行它 start randomcheck.bat & start randomcheck.bat 已打开两个控制台,并且两个控制台都包含相同的数字4645。这无法达到提供不同临时文件夹的随机目的(仅当同时使用它们时才需要随机文件夹)。 您如何批量拥有普通的随机生成器? 更新https://stackoverflow.com/a/19697361/1083704已量化了全球种子更新周期。 Windows Shell全局种子每秒更新一次。 实际上,我必须再增加一秒的安全裕度,以防止比赛,并希望这是足够的措施。 这真糟透了。 这意味着为我的iCore7启动8个进程将花费16秒。 而且我仍然不确定是否会成功,因为没有正式指定任何东西,而且尽管最初有相对时移启动了8个进程,但仍然有可能两个进程同时完成,我必须注意它们是不会再次同时重新启动。 这完全是胡说八道,我的问题是,可以在不借助C ++或VBScript的情况下批量解决此问题吗? 回答1 MC ND在他的回答以及他的后续评论中的所有观点上都是100%正确的。 CMD.EXE的每个实例在启动时都会使用从当前时间以1秒分辨率派生的种子来初始化随机数生成器。 在同一秒内启动的所有CMD.EXE进程将获得相同的随机数序列。 另一个方面-连续几秒钟的初始随机数变化非常缓慢。
  • Efficient random generator for very large range (in python)
    I am trying to create a generator that returns numbers in a given range that pass a particular test given by a function foo. However I would like the numbers to be tested in a random order. The following code will achieve this: from random import shuffle def MyGenerator(foo, num): order = list(range(num)) shuffle(order) for i in order: if foo(i): yield i The Problem The problem with this solution is that sometimes the range will be quite large (num might be of the order 10**8 and upwards). This function can become slow, having such a large list in memory. I have tried to avoid this problem
  • Fastest way to write huge data in file
    I am trying to create a random real, integers, alphanumeric, alpha strings and then writing to a file till the file size reaches 10MB. The code is as follows. import string import random import time import sys class Generator(): def __init__(self): self.generate_alphabetical_strings() self.generate_integers() self.generate_alphanumeric() self.generate_real_numbers() def generate_alphabetical_strings(self): return ''.join(random.choice(string.ascii_lowercase) for i in range(12)) def generate_integers(self): return ''.join(random.choice(string.digits) for i in range(12)) def generate
  • Seeding a random number generator C++ [duplicate]
    This question already has answers here: How to generate a random number in C++? (12 answers) Closed 3 years ago. I have two questions. What other ways are there to seed a psuedo-random number generator in C++ without using srand(time(NULL))? The reason I asked the first question. I'm currently using time as my seed for my generator, but the number that the generator returns is always the same. I'm pretty sure the reason is because the variable that stores time is being truncated to some degree. (I have a warning message saying, "Implicit conversion loses integer precision: 'time_t' (aka 'long'
  • How to send a localNotification at a specific time everyday, even if that time has passed?
    I have this code which runs a notification everyday at 7am, it gets the current date and then runs the notification when it gets to the set hour, my problem is if the time has already passed the set run time then everyday it will run at the user current time not my time on 7am, here is my code var dateFire: NSDateComponents = NSDateComponents() var getCurrentYear = dateFire.year var getCurrentMonth = dateFire.month var getCurrentDay = dateFire.day dateFire.year = getCurrentYear dateFire.month = getCurrentMonth dateFire.day = getCurrentDay dateFire.hour = 7 dateFire.minute = 0 dateFire.timeZone
  • 播种随机数生成器C ++ [重复](Seeding a random number generator C++ [duplicate])
    问题 这个问题已经在这里有了答案: 如何在C ++中生成一个随机数? (12个答案) 3年前关闭。 我有两个问题。 还有什么其他方法可以在不使用srand(time(NULL))情况下在C ++中播种伪随机数生成器? 我问第一个问题的原因。 我目前正在使用时间作为生成器的种子,但是生成器返回的数字始终相同。 我很确定,原因是因为存储时间的变量在某种程度上被截断了。 (我有一个警告消息,“隐式转换将失去整数精度:'time_t'(又名'long')到'unsigned int')我猜测这实际上是在告诉我,直到明年我的种子都不会改变出于我的目的,使用时间作为种子可以很好地工作,但是我不知道如何摆脱这种警告。 我以前从未收到该错误消息,因此我认为它与Mac有关。 它是64位OS X v10.8。 我也在使用Xcode进行编写和编译,但是在其他使用Xcode的计算机上我没有遇到任何问题。 编辑:在进行了更多的研究之后,我发现了64位Mac所存在的错误。 (如果我记错了,请指正。)如果您尝试让Mac使用time(NULL)作为种子来选择1到7之间的随机数,则始终会得到数字4。 总是。 我最终使用了mach_absolute_time()作为我的随机mach_absolute_time()种子。 显然,这消除了我程序的所有可移植性……但是我只是一个业余爱好者。 Edit2:源代码:
  • “新的Random(x)”总是生成相同的数字吗? [复制](“new Random(x)” always generates the same numbers? [duplicate])
    问题 这个问题已经在这里有了答案: 随机数生成器仅生成一个随机数(10个答案) 8年前关闭。 我试图获得一个唯一的随机数,但是每次运行代码时,我总是得到相同的数字。 我会先得到14,然后是6,但是我的列表中保存所有使用的数字似乎不起作用。手动添加14会起作用,但是当我添加randInt时它不​​起作用。 const int numCards = 32; List<int> usedCards = new List<int>(); int randInt = 0; Random rand = new Random(numCards); usedCards.Add(14); do { randInt = rand.Next(0, numCards); MessageBox.Show(randInt.ToString(), "End Game", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } while (usedCards.Contains(randInt)); usedCards.Add(randInt); 回答1 代替: Random rand = new Random(numCards); 和 Random rand = new Random(); 在Random构造函数调用中提供固定的种子值(
  • 检查时间是否在两次之间(时间数据类型)(Check if a time is between two times (time DataType))
    问题 我有一个表,其中有一个列“ Created”作为日期时间。 我正在尝试查询以检查Created值的时间是否在两次之间。 第一行的创建日期时间为“ 2013-07-01 00:00:00.000”(午夜),我正在尝试查询时间为11PM至7AM。 select * from MyTable where CAST(Created as time) between '23:00:00' and '06:59:59' 但是没有结果返回。 我需要将时间转换为日期时间吗? 回答1 我怀疑您要检查是在晚上11点之后还是早上7点之前: select * from MyTable where CAST(Created as time) >= '23:00:00' or CAST(Created as time) < '07:00:00' 回答2 select * from MyTable where CAST(Created as time) not between '07:00' and '22:59:59 997' 回答3 我有一个非常相似的问题,想分享我的解决方案 给定此表(所有MySQL 5.6): create table DailySchedule ( id int auto_increment primary key, start_time time not null, stop
  • 如何确保两个不同的向量在C ++中以相同的顺序被混洗? [复制](How to ensure two different vectors are shuffled in the same order in C++? [duplicate])
    问题 这个问题已经在这里有了答案: random_shuffle算法-在没有随机生成器函数的情况下会产生相同的结果吗? (3个答案) 7年前关闭。 我有两个向量: vector1 = [1 2 3 4 5 6 7 8 9] vector2 = [1 2 3 4 5 6 7 8 9] 我想确保,当我同时使用random_shuffle进行混洗时,应按照相同的相应顺序进行混洗。 例如: 改组后的输出应为: vector1 = [1 9 3 4 2 7 8 5 6] vector2 = [1 9 3 4 2 7 8 5 6] 但是我得到的输出如下: vector1 = [5 1 7 4 2 3 9 8 6] vector2 = [3 4 1 9 8 2 5 7 6] 这是我的代码: int main () { std::srand ( unsigned ( std::time(0) ) ); std::vector<int> vector1, vector2; // set some values: for (int i=1; i<10; ++i) { vector1.push_back(i); vector2.push_back(i); } // using built-in random generator: std::random_shuffle ( vector1.begin()
  • Python中的RSA加密和解密(RSA encryption and decryption in Python)
    问题 我需要在Python中使用RSA加密和解密的帮助。 我正在创建一个私钥/公钥对,使用密钥加密消息并将消息写入文件。 然后,我从文件中读取密文,并使用密钥解密文本。 我在解密部分遇到了麻烦。 正如您在下面的代码中看到的那样,当我将decrypted = key.decrypt(message)放入该程序时,解密后的消息将再次被加密。 似乎没有从文件中读取密文。 谁能帮我写这段代码,以便解密从文件中读取密文,然后使用密钥解密密文? import Crypto from Crypto.PublicKey import RSA from Crypto import Random random_generator = Random.new().read key = RSA.generate(1024, random_generator) #generate public and private keys publickey = key.publickey # pub key export for exchange encrypted = publickey.encrypt('encrypt this message', 32) #message to encrypt is in the above line 'encrypt this message' print 'encrypted
  • 需要一个用于C ++的快速随机生成器[关闭](Need a fast random generator for c++ [closed])
    问题 关闭。 此问题不符合堆栈溢出准则。 它当前不接受答案。 想要改善这个问题吗? 更新问题,使它成为Stack Overflow的主题。 3年前关闭。 改善这个问题 我正在尝试在TSP生成器上进行一些eu-3距离的opt-3交换,并且由于在许多情况下我有超过500个左右的节点,因此我需要随机选择要尝试交换的3个节点中的至少1个。 所以基本上我需要一个快速的随机数函数。 (普通的rand()太慢了)它不一定很棒,只要足够好就可以了。 编辑:我忘了提,我正坐在一个环境中,除了标准语言库(例如STL,iostream等)之外,我无法添加任何库。 所以没有助推力= / 回答1 另一个线程提到了Marsaglia的xorshf生成器,但是没有人发布代码。 static unsigned long x=123456789, y=362436069, z=521288629; unsigned long xorshf96(void) { //period 2^96-1 unsigned long t; x ^= x << 16; x ^= x >> 5; x ^= x << 1; t = x; x = y; y = z; z = t ^ x ^ y; return z; } 我已经在整个地方使用了这个。 它唯一失败的地方是当我尝试生成随机二进制矩阵时。 过去大约95x95的矩阵
  • 仅按行进行整洁的随机多维数组,保持列顺序不变(Numpy shuffle multidimensional array by row only, keep column order unchanged)
    问题 如何仅在Python中按行对多维数组进行混排(因此,请勿对列进行混排)。 我正在寻找最有效的解决方案,因为我的矩阵非常庞大。 是否还可以在原始阵列上高效执行此操作(以节省内存)? 例子: import numpy as np X = np.random.random((6, 2)) print(X) Y = ???shuffle by row only not colls??? print(Y) 我现在期望的是原始矩阵: [[ 0.48252164 0.12013048] [ 0.77254355 0.74382174] [ 0.45174186 0.8782033 ] [ 0.75623083 0.71763107] [ 0.26809253 0.75144034] [ 0.23442518 0.39031414]] 输出对行而不是列进行随机排序,例如: [[ 0.45174186 0.8782033 ] [ 0.48252164 0.12013048] [ 0.77254355 0.74382174] [ 0.75623083 0.71763107] [ 0.23442518 0.39031414] [ 0.26809253 0.75144034]] 回答1 您可以使用numpy.random.shuffle()。 此功能仅沿多维数组的第一轴对数组进行混洗。
  • 随机数类内初始化(Random Number In-Class Initialisation)
    问题 我目前正在创建一个类,每次创建对象时,我都希望使用一个随机数来初始化其中一个私有成员。 以下代码不会引起问题: private: unsigned random = rand() % 10; 但是,我想使用C ++ 11随机引擎和发行版来做到这一点。 我希望能够按照以下代码的方式做一些事情,这些代码不会编译,但会大致说明我要执行的操作: private: unsigned random = distribution(mersenne_generator(seed)); static std::random_device seed_generator; static unsigned seed = seed_generator(); //So that it's not a new seed each time. static std::mt19937 mersenne_generator; static std::uniform_int_distribution<unsigned> distribution(0, 10); 这段代码无法编译,因为我试图在类中定义一些静态成员。 但是,我不确定在哪里定义它们。 我可以创建一个初始化所有内容的成员函数,但是随后我将不得不在main中运行它,而我不想这样做。 我只想整理类中的所有随机定义,以便在main中创建对象时
  • C ++ 11:如何使用设置种子(C++11: How to set seed using <random>)
    问题 我正在练习C ++ 11的新随机库。 我编写了以下最小程序: #include <iostream> #include <random> using namespace std; int main() { default_random_engine eng; uniform_real_distribution<double> urd(0, 1); cout << "Uniform [0, 1): " << urd(eng); } 当我重复运行此命令时,每次都会给出相同的输出: >a Uniform [0, 1): 0.131538 >a Uniform [0, 1): 0.131538 >a Uniform [0, 1): 0.131538 我希望程序在每次调用时都设置不同的种子,以便每次生成不同的随机数。 我知道random提供了一种称为seed_seq的功能,但是我发现它的解释(在cplusplus.com上)完全晦涩: http://www.cplusplus.com/reference/random/seed_seq/ 我希望您能就每一次调用一个程序生成一个新种子的建议提供帮助:越简单越好。 我的平台: Windows 7:TDM-GCC编译器 回答1 具有seed_seq在于增加所生成序列的熵。 如果您的系统上具有random_device
  • C ++,二十个数字不是随机的吗? [关闭](C++, twenty numbers not random? [closed])
    问题 关门了。 这个问题需要更加集中。 它当前不接受答案。 想要改善这个问题吗? 更新问题,使其仅通过编辑此帖子即可将重点放在一个问题上。 2年前关闭。 改善这个问题 为什么我的C ++数字不是随机的? #include <iostream> #include <cstdlib> using namespace std; int main() { int randomNumber = rand() % 100; for (randomNumber = 0; randomNumber < 20; randomNumber++) { cout << randomNumber << endl; } return 0; } //Why are my 20 numbers not random? 回答1 每次需要随机数时,都需要调用rand()。 现在,您将生成一个随机数,然后将其递增并打印20次,这样您将获得20个连续数。 尝试类似的东西 srand(time(NULL)); // Seeding the random number generator for(int i=0; i<20; ++i) { cout << (rand() % 100) << endl; } 随机数生成器的种子很重要,否则,您每次运行程序都将生成相同的数字。 回答2 您要为randomNumber分配一个随机值
  • 随机数生成器-为什么每次都播种(Random number generator - why seed every time)
    问题 我是C和C ++的新手。 在Java(我用来编程的语言)中,它非常容易实现随机数生成。 只需从名为Math的类中调用静态随机方法即可。 int face = ((int)(Math.random() * 6) + 1); 模拟掷骰子... 在c和c ++中,您必须通过调用srand函数来“种子随机数生成器” srand ( time(NULL) ); 这样做有什么意义-我的意思是每次运行代码时都必须为随机数生成器提供种子有什么好处? 回答1 给定相同的种子,伪随机数生成器每次都会产生相同的序列。 因此,这取决于您是否每次运行都需要不同的伪随机数序列。 这真的取决于您的需求。 有时您想重复一个序列。 而当你不这样做的时候。 您需要了解每个特定应用程序的需求。 永远不要做的一件事是在生成单个序列期间重复进行种子。 这样做很可能会破坏序列的分布。 回答2 通常称为随机数生成器的实际上是伪随机数生成器。 这通常意味着,如果您为该序列提供“密钥”(称为“种子”),则可以生成相同的随机序列。 当您希望测试基于随机化的算法并且需要确保可重复的结果时,这非常有用。 如果您不“播种”您的随机数生成器,则默认情况下会使用一些(通常基于系统时间)随机数作为种子,因此每次您运行程序时都会生成不同的序列。 回答3 如果不为生成器提供种子,则每次运行程序时,它都将具有相同的种子
  • Math.random()-非随机(Math.random() - Not random [closed])
    问题 关闭。 这个问题需要调试细节。 它当前不接受答案。 想要改善这个问题吗? 更新问题,使它成为Stack Overflow的主题。 5年前关闭。 改善这个问题 我创建了一个jQuery插件,但是有一个问题,我使用以下代码: Math.floor(Math.random()*500) 我将结果添加到元素中,但奇怪的是结果每次都是一样的。 如果我在生成随机数之后向该行添加一个alert(),我将获得随机值,为什么? 我想获得没有alert()随机整数的信息。 但是如何? 回答1 随机数函数是一个模拟随机的方程,但是它仍然是一个函数。 如果给它相同的种子,第一个答案将是相同的。 您可以尝试更改种子,并在首次加载javascript时执行此操作,这样,如果随机数生成器具有时间成分,则它可以使用加载页面的延迟来使数字更随机化。 但是,您可能想要更改种子。 您可以使用Date()函数,然后获取毫秒并将其用作种子,这可能有助于先对其进行加扰。 我认为生成器有一个时间成分是事实,它会随着警报而变化,因为生成下一个数字会延迟,尽管我尚未对此进行测试。 更新: 我意识到规范指出没有Math.random的参数,但是有一个种子正在使用。 我来自C语言,然后来自Java语言,因此使用参数没有错误的事实使我认为它使用了它,但是现在我发现那是不正确的。 如果您真的需要种子