小编ana*_*and的帖子

随机算法

我需要一些关于随机性算法的帮助.所以问题是.

有8个事件将在8小时内发生.事件可能在随机时间发生.现在它意味着每秒钟发生事件的可能性为50 /(8*60*60)= .001736.如何使用随机生成算法执行此操作?

我可以得到随机数

int r = rand();
double chance = r/RAND_MAX;
if(chance < 0.001736)
    then event happens
else
    no event
Run Code Online (Sandbox Code Playgroud)

但大多数时候rand()返回0和0 <0.001736并且我收到的事件多于所需的事件.

有什么建议?


抱歉,我忘记提及我计算机会为双倍机会=(static_cast)(r)/(static_cast)(RAND_MAX);


它从static_cast中删除了double

double chance =(double)r /(double)(RAND_MAX);

c++ random events

1
推荐指数
2
解决办法
473
查看次数

正则表达式匹配不同主机上的确切url路径

需要帮助来创建正则表达式匹配字符串

www.*.abc.*/somestring
Run Code Online (Sandbox Code Playgroud)

这里*是外卡,它可以像我们这样的任何人,英国

或者com,edu

喜欢

 www.us.abc.com/somestring
www.uk.abc.edu/somestring
Run Code Online (Sandbox Code Playgroud)

regex

1
推荐指数
1
解决办法
6613
查看次数

将消息发送到不同的线程

是否有任何API可以向线程发送消息?基本上我只有threadId可用,我想向该线程发送自定义消息.

c++ windows winapi multithreading

1
推荐指数
1
解决办法
2310
查看次数

查找整数的算法,使其数字的乘积为 N

我在挑战之一中发现了这个问题。

问题是我们给定一个整数N,我们需要找到最小的数字X,其数字乘积为N

我的方法是首先找到单位数的质数,例如10个倍数是2,5,100个倍数是2,2,5,5

  • 现在我需要找到最小的整数,所以我数一下 2 和 3 的数量
  • 如果有三个 2,那么我将三个 2 替换为一个 8
  • 如果有两个2,那么我会将两个2替换为一个4
  • 如果有两个 3,那么我会将两个 3 替换为一个 9

你们能想到更好的算法吗?

int getNumber(int n) {

    int temp = n;
    int a[4] ={2,3,5,7};
    std::string str;
    do
    {
        for(int i=0;i<4;++i)
        {
            int val = temp%a[i];
            if(val ==0)
            {
                char s[260];
                sprintf(s,"%d",a[i]);
                str += s;
                temp /=a[i];
                break;
            }

        }

    }while(temp>1);
    char newStr[260];
    int countof2=0,countof3=0;
    for(int i=0;i<str.length();++i)
    {
        if(str[i]=='2')
                ++countof2;
        if(str[i]=='3')
            ++countof3;
    }
    bool bFlag=false;
    int indexNew=0;
        if(countof2 >= 3)
        {

            int count =0; …
Run Code Online (Sandbox Code Playgroud)

algorithm data-structures

1
推荐指数
1
解决办法
3503
查看次数