按天生成固定随机数,指定随机数范围

MicroX.S.r 2018-10-09 01:34:51
每天生成一个在该范围内的固定的随机数。求大神给个思路。
...全文
578 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
一加上”在该范围内的“这么一个限定语如果你就懵了,那么你应该都多学点数学函数映射和逻辑知识。
  • 打赏
  • 举报
回复
引用 11 楼 Lollipop6105 的回复:
[quote=引用 4 楼 hanjun0612 的回复:] 啥叫在范围内的,固定的,随机数???
比方说,在3000-5000之间,今天的随机数是3333,那今天取的数一直是3333,明天就变成了另外一个数[/quote] 生成 a~b 之间的一个数,就是先生成0~b-a之间的一个数,然后加上a。 这个是初学,稍微地脑筋急转弯儿就行了。
eaqpi 2018-10-11
  • 打赏
  • 举报
回复
为啥要随机数,直接yyyyMMdd,用起来多爽???
游北亮 2018-10-11
  • 打赏
  • 举报
回复
8楼的代码完全符合你的要求,你还有什么疑问?
正怒月神 2018-10-11
  • 打赏
  • 举报
回复
使用 Random的构造函数, Random(int seek),保持seek在当天不变就好了。 所以使用日期作为seek是可以的。
lmj9401 2018-10-11
  • 打赏
  • 举报
回复
这段代码可以满足你的要求:
int d = int.Parse(DateTime.Now.ToString("yyyyMMdd"));
Random r = new Random(d);
int n = r.Next(3000, 5000);
吉普赛的歌 2018-10-11
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp18
{
    class Program
    {
        static void Main(string[] args)
        {
            DateTime[] dtArr = { DateTime.Now, DateTime.Now.AddDays(1), DateTime.Now.AddDays(2), DateTime.Now.AddDays(3) };
            for (int i = 0; i < 3; i++)
            {
                Console.WriteLine($"----- 第 {i} 次 -----");
                foreach (DateTime dt in dtArr)
                {
                    //增加随机秒数
                    DateTime testDt = dt.AddSeconds(new Random().Next(1, 180));
                    Console.WriteLine($"{testDt:yyyy-MM-dd} -> {GetRand(testDt)}");
                }
            }
            Console.Read();
        }

        static int GetRand(DateTime dt)
        {
            int seek = Convert.ToInt32(dt.ToShortDateString().Replace("-",""));
            Random random = new Random(seek);
            return random.Next(3000, 5000);
        }
    }
}
满足你 #12 所说的要求了。
xuzuning 2018-10-11
  • 打赏
  • 举报
回复
Random 发出的是伪随机数序列
而伪随机数序列的特点就是:相同的种子,得到的序列相同
按你的需求,只需
var 值 = new Random((int)DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")).Ticks).Next(3000, 5000);
就可以了
MicroX.S.r 2018-10-11
  • 打赏
  • 举报
回复
可能问题没有描述清楚。可以这么理解
1.数字范围固定,比如:3000-5000之间
2.每天在指定的数字范围内取出来一个数字,当天不管取多少次都是同一个数字
3.不同天取出来的数字可以相同,但不是全部都相同
4.不需要存储

MicroX.S.r 2018-10-11
  • 打赏
  • 举报
回复
引用 4 楼 hanjun0612 的回复:
啥叫在范围内的,固定的,随机数???

比方说,在3000-5000之间,今天的随机数是3333,那今天取的数一直是3333,明天就变成了另外一个数
MicroX.S.r 2018-10-11
  • 打赏
  • 举报
回复
引用 2 楼 yenange 的回复:
每天的随机数, 是否允许重复?
可以重复的
CGabriel 2018-10-09
  • 打赏
  • 举报
回复
Random.Next 有个重载是可以指定范围的: https://docs.microsoft.com/en-us/dotnet/api/system.random.next?view=netframework-4.7.2#System_Random_Next_System_Int32_System_Int32_
游北亮 2018-10-09
  • 打赏
  • 举报
回复
想了一下,楼上的代码不太合适,变成是 1~31之间的数字了,哈哈,改成下面这样就好了:
var tsDays = (DateTime.Now.Date - TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1))).TotalDays;
            var ret = tsDays % 100;
游北亮 2018-10-09
  • 打赏
  • 举报
回复
用日期对范围进行取模, 假设随机数范围是 0~99,简单代码示例:

var date = int.Parse(DateTime.Now.ToString("yyyyMMdd"));
var ret = date % 100; // 这个ret就是0到99之间的值了
token不能为空 2018-10-09
  • 打赏
  • 举报
回复
是的,问题描述的再清楚一些,怎么个固定随机数
E次奥 2018-10-09
  • 打赏
  • 举报
回复
每天的范围是固定的吗? 随机数可以重复吗? 目前所谓的随机数都是假的,有一定规律的;还不如时间戳好用!!!
正怒月神 2018-10-09
  • 打赏
  • 举报
回复
啥叫在范围内的,固定的,随机数???
  • 打赏
  • 举报
回复
你直接按天取hash值,然后略作处理不就行了,绝对固定,但肯定不随机
吉普赛的歌 2018-10-09
  • 打赏
  • 举报
回复
每天的随机数, 是否允许重复?
baidu_39535885 2018-10-09
  • 打赏
  • 举报
回复
時間戳不就好了

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧