找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2198|回复: 22

[原创]:随机数的建立

[复制链接]
发表于 2004-12-22 19:43:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
[php]
(defun c:test (/ l nb)
  (setq        no1 (ureal 1 "" "随机数个数" no1)
        no2 (ureal 1 "" "随机数位数" no2)
  )
  (setq l (strlen (rtos (getvar "cputicks") 2 0)))
  (if (> l no2)
    (repeat (fix no1)
      (setq nb (rtos (getvar "cputicks") 2 0)
            l  (strlen nb)
            nb (substr nb (- l (- (fix no2) 1)))
      )
      (princ "\n")
      (princ nb)
    )
    (alert "\n随机数位数太多!")
  )
  (princ)
)
(defun ureal (bit kwd msg def / inp)
  (if def
    (setq msg (strcat "\n" msg "<" (rtos def 2) ">: ")
          bit (* 2 (fix (/ bit 2)))
    )
    (setq msg (strcat "\n" msg ": "))
  )
  (initget bit kwd)
  (setq inp (getreal msg))
  (if inp
    inp
    def
  )
)
[/php]
命令: test
随机数个数<50.00000>: 30

随机数位数<12.00000>: 8

44342134
45904933
50457732
55047195
57353788
59814841
62076590
64453664
66749881
69002902
71260884
73516292
78064277
80534969
82898123
85799151
88098887
91491401
93853335
96244971
98607749
00915761
04366178
06759751
09081343
11936923
14213316
16468180
19896480
22184353
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-12-22 22:02:50 | 显示全部楼层
1楼楼主,"cputicks"是个什么系统变量,能取值,但我怎么在帮助文档中找不到它的说明......
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-12-22 23:06:41 | 显示全部楼层
偶也不知道。
今天在网上向高手学的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-23 07:19:54 | 显示全部楼层
xyp1964,你竖着看看你所列数字第1列 456789012,这与随机有些差别哟!

另外我做了个试验,不知问题在哪里?

测试程序如下:

(DEFUN C:TESTRND (/ x y os)  ;随机数测试程序
  (setq os (getvar "osmode"))
  (setvar "osmode" 0)
  (setvar "CMDECHO" 0)
  (command "_.undo" "_Group")
  (REPEAT 10000
    (SETQ X (Rand 1000)) ;(SETQ X (Rand1 1000))
    (SETQ Y (Rand 1000)) ;(SETQ Y (Rand1 1000))
    (COMMAND "POINT" (LIST X Y))
  )
  (command "_.undo" "_end")
  (setq js (getvar "date"))
  (setvar "osmode" os)
  (setvar "CMDECHO" 1)
  (princ)
)

(defun rand (valmax /)   
(setq seed (rem (getvar "cputicks") valmax) )
)

(defun rand1 (valmax /)
  (if (= seed1 nil) (setq seed1 (getvar "date")))
  (setq seed1 (rem (+ 69991.0 (* seed1 69997.0)) valmax))
)

效果图如下:(两种情况在我的电脑上运行大约都是30秒左右,相差很小)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-23 09:32:05 | 显示全部楼层

Re: [原创]:随机数的建立

最初由 xyp1964 发布
[B][php]
(defun c:test (/ l nb)
  (setq        no1 (ureal 1 "" "随机数个数" no1)
        no2 (ureal 1 "" "随机数位数" no2)
  )
  (setq l (strlen (rtos (getvar "cputicks") 2 0)))
  (if (> l no2)
    (repeat (fix... [/B]


http://www.mjtd.com/bbs/dispbbs. ... p;id=30632&skin


  1. ;;BY LUCAS (龍龍仔)
  2. ;;我在明經不是有給一合連結說明那系統變數嗎?
  3. ;;以下是的一個給隨機名稱的程序
  4. (defun RANDOM_NAME (/ A N B)
  5.   (setq A (rtos (fix (getvar "cputicks")) 2 0))
  6.   (setq        N (strlen A)
  7.         B ""
  8.   )
  9.   (repeat N
  10.     (setq B (strcat B (substr A N 1)))
  11.     (setq N (1- N))
  12.   )
  13.   (substr
  14.     (strcat "LAI$"
  15.             (rtos (* 6.789
  16.                      (+        (atof A)
  17.                         (atof B)
  18.                         (atof (substr (rtos (* (getvar "CDATE") 1E8)) 4))
  19.                      )
  20.                   )
  21.                   2
  22.                   0
  23.             )
  24.     )
  25.     1
  26.     18
  27.   )
  28. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-23 10:03:20 | 显示全部楼层
龙龙仔就不要卖关子了,在这儿再说说cputicks吧。给个链接也行啊。
我原来也是用取得系统时间的方法写随机数的。不知这种方法有什么特别。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-12-24 00:31:25 | 显示全部楼层
命令: sjpt
随机数个数<20000.000>:
随机数位数<3.000>:
产生的点阵效果:
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-24 16:20:27 | 显示全部楼层
xyp1964 你的随机数程序效果不好呀

  1. 6678361976
  2. 6678713642
  3. 6679065367
  4. 6679416890
  5. 6679767032
  6. 6680117474
  7. 6680489042
  8. 6680842172
  9. 6681193238
  10. 6681544676
  11. 6681940275
  12. 6682310273
  13. 6682934535
  14. 6683315464
  15. 6683677932
  16. 6684029298
  17. 6684378732
  18. 6684729018
  19. 6685078698
  20. 6685428834
  21. 6685791582
  22. 6686149248
  23. 6686500446
  24. 6686849562
  25. 6687198162
  26. 6687547830
  27. 6687896250
  28. 6688245690
  29. 6689143942
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2004-12-24 17:21:26 | 显示全部楼层
在网上搜索,结论是“cputicks”还是一个关于时间的未公开的系统变量。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-12-24 17:47:52 | 显示全部楼层
最初由 wkai 发布
[B]xyp1964 你的随机数程序效果不好呀
[code]
6678361976
6678713642
6679065367
6679416890
6679767032
6680117474
6680489042
6680842172
6681193238
6681544676
6681940275
6682310273
6682934535
66... [/B]

位数越多越会这样。
但“决不会”连号。
可以把前几位看成是“彩票”的组号。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-12-24 18:28:59 | 显示全部楼层
命令: sjd
随机数个数<10000.000>:
随机数位数<3.000>: 5
效果:
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-12-24 18:35:11 | 显示全部楼层
命令: sjd
随机数个数<1000.000>:
随机数位数<1.000>: 2
效果:
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-24 21:28:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
“cputicks”相隔0.01 毫秒的cpu内部“计时”?
以6678361976
6678713642
6679065367
6679416890
6679767032
6680117474
6680489042
6680842172
6681193238
为例,相隔是“等距”的,尾数有取整误差
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2004-12-31 00:38:16 | 显示全部楼层
星光:
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-12-31 00:44:23 | 显示全部楼层
星光效果:
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-16 12:40 , Processed in 0.419336 second(s), 62 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表