gpt4 book ai didi

c - 在C中的一组数字中选择一个随机数

转载 作者:行者123 更新时间:2023-11-30 17:26:06 25 4
gpt4 key购买 nike

我正在尝试实现 karger 随机收缩算法,该算法涉及随机选择图的 2 个相邻顶点并将它们收缩,直到总共只剩下 2 个顶点。我正在使用此代码生成随机数

#include <time.h>
#include <stdlib.h>

srand(time(NULL));
int r = rand() % v; (v is the number of vertices in the graph and will decrease by 1 for every contraction)

我的输入数据如下:

1(1 的邻接列表)

2(2 的邻接列表)

3(3 个邻接列表)依此类推,直到 200 个顶点及其邻接列表。

由于我必须随时删除节点,因此我生成了两个随机数,我将它们用于位置,即我将选择两个位置处的顶点,如果它们是相邻节点,则收缩这两个节点

我必须运行算法大约 c*(n log n) 次才能获得正确的最小切割,

但是我无法获得最小切割< 20,我做错了什么?我认为“它不够随机”我该如何改进我的解决方案?

最佳答案

如果我理解正确,类似这样的事情应该有效:

   int min = ( rand() % 20 ); //random number 0-20        
int r = ( rand() % (range-min) ) + min; //random number will be greater than min but less than range
printf('%d', numSet[r]); //randomly select array position

关于c - 在C中的一组数字中选择一个随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26892104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com