| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4055 人关注过本帖
标题:[求助]想编一个醉汉走路程序!
取消只看楼主 加入收藏
hzwnk
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-11-4
收藏
 问题点数:0 回复次数:9 
[求助]想编一个醉汉走路程序!
从随机函数生成一个0~1的值,若值为0~0.25,则向上走,0.25~0.5,向右走,0.5~0.75向下走,0.75~1向左走
走过了的点不能在走,求走1000步后的轨迹。
又会的麻烦帮帮忙!!谢谢!
搜索更多相关主题的帖子: 醉汉 随机函数 轨迹 
2007-11-04 10:26
hzwnk
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-11-4
收藏
得分:0 
还是不太懂,我只会C++.初始想设个数组,每次走完后把点放进去,而每次走之前则与数组中每一个元素比较,但是这样效率很低!还有,C++中的随机函数真没用过,谁能说说如何产生0~1间的数呢?谢谢!
2007-11-04 16:45
hzwnk
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-11-4
收藏
得分:0 
以下是引用hzwnk在2007-11-4 10:26:45的发言:
从随机函数生成一个0~1的值,若值为0~0.25,则向上走,0.25~0.5,向右走,0.5~0.75向下走,0.75~1向左走
走过了的点不能在走,求走1000步后的轨迹。
又会的麻烦帮帮忙!!谢谢!

倘若要显示,如何能做得到?谢谢!!

2007-11-04 16:46
hzwnk
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-11-4
收藏
得分:0 
以下是引用wdq197在2007-11-4 16:52:40的发言:
LZ也是初学者吗?

可以这么说!曾经几年前学过两个学期,现在都忘光了。

2007-11-04 17:04
hzwnk
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-11-4
收藏
得分:0 
以下是引用hzwnk在2007-11-4 16:45:17的发言:
还是不太懂,我只会C++.初始想设个数组,每次走完后把点放进去,而每次走之前则与数组中每一个元素比较,但是这样效率很低!还有,C++中的随机函数真没用过,谁能说说如何产生0~1间的数呢?谢谢!

有人能回答一下这个问题吗?想过用指针,但感觉很容易出错。

2007-11-05 09:20
hzwnk
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-11-4
收藏
得分:0 

我自己编了一下,不会显示轨迹,还有随机函数也不知道对不对,请高人指点指点:
#include<iostream.h>
void main()
{ int x=0,y=0,i,c;
float t;
int *p;
int a[1000];
*p=&a;
for(i=0;i<=100;i++)
{ t=rand();
if(0<t<=0.25)
{ y++;
c=cmp(x,y);
if(c)
{ a[i]={(x,y)};
p++;
}
}
if(0<t<=0.5)
{ x++;
c=cmp(x,y);
if(c)
{ a[i]={(x,y)};
p++;
}
}
if(0.5<t<=0.75)
{ y--;
c=cmp(x,y);
if(c)
{ a[i]={(x,y)};
p++;
}
}
if(0.75<t<=1.0)
{ x--;
c=cmp(x,y);
if(c)
{ a[i]={(x,y)};
p++;
}
}
}
}

int cmp(j,k)
{ int j,k;
strcmp( (j,k),*p);
}

2007-11-05 11:21
hzwnk
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-11-4
收藏
得分:0 
以下是引用LOvE老鼠YoU在2007-11-5 15:01:17的发言:
不懂, 向高手学习,
我连用什么东西编 程序都不知道

晕。。。。

2007-11-05 18:38
hzwnk
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-11-4
收藏
得分:0 
以下是引用pipifei199在2007-11-5 18:48:10的发言:
是醉汉随机游走模型吗?呵呵,不太懂,是在书上看见过的!

现在只能在新手区发帖。。。。郁闷啊。。。。

2007-11-05 20:05
hzwnk
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-11-4
收藏
得分:0 
以下是引用csfeng在2007-11-5 22:37:45的发言:
有意思 怎么显示呢>???

我也在想!!这是个明天就要交的东西!急啊!我之前编了一个程序,怎么没高手帮我看看呢!!郁闷啊!

2007-11-06 08:40
hzwnk
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-11-4
收藏
得分:0 
以下是引用tommi在2007-11-6 16:55:40的发言:

随便写了一个垃圾的, 你参考看考
import java.math.BigDecimal;

class DrinkedWalker {
static void walk(int[][] road) {
int x = 0, y = 0;

for (int i = 0; i < 1000; i++) {
double randomNum = Math.random();

BigDecimal b = new BigDecimal(randomNum);
float roundNum = b.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();
String strDirect = Long.toString(Math.round(roundNum / 0.25));
int direction = Integer.parseInt(strDirect);

int tmpX = x, tmpY = y;
switch(direction) {
case 0:
case 1:
x = x - 1;
break;
case 2:
y = y + 1;
break;
case 3:
x = x + 1;
break;
default:
y = y - 1;
}

if (x >= 0 && y >= 0 && road[x][y] != 1) {
road[x][y] = 1;
} else {
System.out.println("Stop at x=" + tmpX + "; y=" + tmpY);
return;
}
}

System.out.println("Stop at x=" + x + "; y=" + y);
return;
}

public static void main(String[] args) {
int[][] road = new int[100][100];

for (int i = 0; i < 100; i++) {
for (int j = 0; j < 100; j++) {
road[i][j] = 0;
}
}

walk(road);
}

}

请问高手用那种语言编的?Java?大概能看懂,只是有些命令语句没见过。

2007-11-07 10:27
快速回复:[求助]想编一个醉汉走路程序!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013524 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved