通过JS如何随机选择一组数据中的一个
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过JS如何随机选择一组数据中的一个相关的知识,希望对你有一定的参考价值。
例如:aaa,bbb,cc,ded,fff,ggg(这些不是固定的)
然后用js随机选择一个,希望高手指教给出代码
var array = string.split(","); //转化为数组
var value = array[Math.round(Math.random()*(array.length-1))]; //随机抽取一个值
alert(value);
参考技术A var array = ["aaa","bbb","kk","cc","ded","fff","ggg"];
array[Math.round(Math.random() * array.length)] 参考技术B 明显错误
Math.random 大于等于0 小于1 的随机数
math.round 四舍五入取整
math.floor 向下取整
假如三个数 你的算法 Math.random()*(array.length-1) 区间是 [0,2) ,取整之后0为25%, 1为50%, 2为25%
正确的: array[Math.floor(Math.random()*array.length)]
Oracle 中实现随机抽取数据
参考技术A一、Oracle取随机数据 1、Oracle访问数据的基本方法: 1)、全表扫描(Full table Scan):执行全表扫描,Oracle读表中的所有记录,考查每一行是否满足WHERE条件。Oracle顺序的读分配给该表的每一个数据块,且每个数据块Oracle只读一次.这样全表扫描能够受益于多块读. 2)、采样表扫描(sample table scan):扫描返回表中随机采样数据,这种访问方式需要在FROM语句中包含SAMPLE选项或者SAMPLE BLOCK选项. 注:从Oracle8i开始Oracle提供采样表扫描特性
2、使用sample获得随机结果集 2.1、语法: SAMPLE BLOCK [ SEED (seed_value) ] SAMPLE选项:表示按行采样来执行一个全表扫描,Oracle从表中读取特定百分比的记录,并判断是否满足WHERE子句以返回结果。 BLOCK: 表示使用随机块例举而不是随机行例举。 sample_percent:是随机获取一张表中记录的百分比。比如值为10,那就是表中的随机的百分之10的记录。 值必须大于等于.000001,小于100。
SEED:表示从哪条记录返回,类似于预先设定例举结果,因而每次返回的结果都是固定的。该值必须介于0和4294967295之间。
2.2、举例说明
(1)sample(sample_percent):
(2)、sample block(sample_percent)
(3)、sample block(sample_percent) seed(seed_value)
注意以下几点:
1.sample只对单表生效,不能用于表连接和远程表 2.sample会使SQL自动使用CBO
3、使用DBMS_RANDOM包 DBMS_RANDOM有两种主要的使用方法分别是:DBMS_RANDOM.VALUE()和DBMS_RANDOM.RANDOM
4、使用 内部函数sys_guid()
****注:****
在使用sys_guid() 这种方法时,有时会获取到相同的记录,即和前一次查询的结果集是一样的,查找相关资料,有些说是和 操作系统 有关,在windows平台下正常,获取到的数据是随机的,而在 Linux 等平台下始终是相同不变的数据集,有些说是因为sys_guid()函数本身的问题,即sys_guid()会在查询上生成一个16字节的全局唯一标识符,这个标识符在绝大部分平台上由一个宿主标识符和进程或进程的线程标识符组成,这就是说,它很可能是随机的,但是并不表示一定是百分之百的这样。
所以,为确保在不同的平台每次读取的数据都是随机的,我们大多采用使用sample函数或者DBMS_RANDOM包获得随机结果集,其中使用sample函数更常用,因为其查询时缩小了查询范围,在查询大表,且要提取数据不是很不多的情况下,会对查询速度上有明显的提高。
以上是关于通过JS如何随机选择一组数据中的一个的主要内容,如果未能解决你的问题,请参考以下文章