再问一个菜问题。。。一个简单的随机算法。。

flyrocer 2003-07-27 09:56:11
如何实现一个简单的随机算法,如要从12个数中随机抽出6个,如何实现???
...全文
34 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
leafxx 2003-07-29
  • 打赏
  • 举报
回复
注释位置写错了
leafxx 2003-07-29
  • 打赏
  • 举报
回复
偶来写一个C下的:

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

main()
{
int i,j;
int ballN[12]={1,2,3,4,5,6,7,8,9,10,11,12};



for (i=0; i<6; )
{ srand(time(NULL));
j=(rand()%13);

if (ballN[j]!=-1)
{ printf ("%3d", ballN[j]); /* 将取过的值置为-1 */
i++;
ballN[j] = -1;
}


}
getchar();

}
lw_yx 2003-07-29
  • 打赏
  • 举报
回复
UP
MaiCle 2003-07-27
  • 打赏
  • 举报
回复
stukov2002(卡拉是头猪):是个好孩子。:)
MaiCle 2003-07-27
  • 打赏
  • 举报
回复
stukov2002(卡拉是头猪):呵呵,客气客气。
MaiCle 2003-07-27
  • 打赏
  • 举报
回复
还有啊:
srand(time(NULL));
for(n = 0; n < 6; n ++)
{
printf("%d\n", nArray[rand() % 6]);
}
取出来的6个数是一样的。

应该这样:

for(n = 0; n < 6; n ++)
{
srand(time(NULL));
printf("%d\n", nArray[rand() % 6]);
}
idontlikenickname 2003-07-27
  • 打赏
  • 举报
回复


唔~知错就改就是好孩子~
多谢MaiCle(【找个深圳玩伴59953505】)
*^^*

MaiCle 2003-07-27
  • 打赏
  • 举报
回复
stukov2002(卡拉是头猪) :你的代码有问题:

for(n = 0; n < 6; n ++)
{
printf("%d\n", nArray[rand() % 6]); //这样搞,永远也取不到nArray[6]以上
的数了。
}
MaiCle 2003-07-27
  • 打赏
  • 举报
回复
struct sT
{
int nValue;
bool bUse;
};

class CTest
{
public:
CTest()
{
for ( int i = 0; i < 12; i++ )
{ m_sz[i].nValue = i; //数组的值是你要存放的数据,这里我随便给了。
m_sz[i].bUse = false; //表示未被使用
}
}
bool GetUse(int nPos)
{
return m_sz[nPos].bUse;
}
void SetUse(int nPos)
{
m_sz[nPos].bUse = true;
}
int GetValue(int nPos)
{
return m_sz[nPos].nValue;
}
private:
sT m_sz[12];
};

int main()
{
CTest Test;
int nPos = 0;
for( int i = 0; i < 6; i++ )
{
srand(time(NULL)); //这里用到的函数要加库头文件
nPos = rand() % 12;
if ( !Test.GetUse(nPos) )
{
Test.GetValue(nPos);
Test.SetUse(nPos);
}
else
{
i--;
}
}
retrun 0;
}
idontlikenickname 2003-07-27
  • 打赏
  • 举报
回复


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

void main()
{
int nArray[12] = { 12个数 };
int n;

srand(time(NULL));
for(n = 0; n < 6; n ++)
{
printf("%d\n", nArray[rand() % 6]);
}
}

MaiCle 2003-07-27
  • 打赏
  • 举报
回复
还可以强大一点就是每次取数组值时判断一下是否取过该值,不难吧。
flyrocer 2003-07-27
  • 打赏
  • 举报
回复
3Q
flyrocer 2003-07-27
  • 打赏
  • 举报
回复
写个对的啊,我很急的。。。
MaiCle 2003-07-27
  • 打赏
  • 举报
回复
是用随机函数与12取余得到12以内的随机数,取6次就OK了。
MaiCle 2003-07-27
  • 打赏
  • 举报
回复
不对,写错了。
MaiCle 2003-07-27
  • 打赏
  • 举报
回复
那还不容易,将这12个数放入一个数组中,然后用随机函数与6取余得到6以内的随机数,然后取数组值就OK了。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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