zoukankan      html  css  js  c++  java
  • 项目应用——数据展示生成随机排序

    项目应用1——按页码生成随机排序【每页元素固定不变】

    步骤:

       统计数据总页数(按照指定分页数,统计总页数)

      使用随机整数生成方法,生成可用的页码数据 https://www.cnblogs.com/sien6/p/13915254.html

      unique_rand(最小页码, 最大页码, 生成总数)

      使用redis或其他缓存工具,保存该随机数列【项目中保存两份相同数列,可进行进一步的功能设计】

      让后使用array_pop()函数,进行随机取数【该数组中的数字代表随机取得的页码数】

    ===》随机生成页码数,根据页码数获取随机数据

    项目应用2——按分页及元素混排方式随机输出【页码及元素随机输出】

    步骤:

      取出页码随机数,按照应用1 的方式生成随机也

      同样统计每页元素并生成随机数,可以采用数据连接函数array_combine()合并数组,然后顺序输出数组即可

    ===》完全随机数据展现【可实现数据每5分钟轮换随机数】

    最后附上网友实现的随机数功能:

    使用原生SQL从数据库获取数据
    
    从Mysql官网可以看到,可以让ORDER BY RAND()和LIMIT一起使用,可以用于从多行结果中选取随机的一部分。 
    
    SELECT * FROM table WHERE name="" ORDER BY RAND() LIMIT 100; 
    那么在laravel中使用原生SQL也很简单,如下所示: 
    
    $info = DB::select('SELECT * FROM table WHERE name="" ORDER BY RAND() LIMIT 100');
    使用原始表达式从数据随机获取数据
    
    我们都知道laravel的原始表达式,我们可以使用DB::raw('RAND()')从数据库随机获取数据。同时你还可以使用orderByRaw('RAND()')从数据库随机获取数据,和DB::raw('RAND()')效果一样
    
    $info=self::where('dealing','<>','') 
            ->orderBy(DB::raw('RAND()')) 
            ->take(5) 
            ->get(); 
    使用laravel的inRandomOrder方法随机获取数据
    laravel中使inRandomOrder会对数据结果进行随机排序,达到我们随机从数据库获取数据的效果:
    
    $info = DB::table('users') 
                ->inRandomOrder() 
                ->take(5) 
                ->get(); 
    注:上面三种对于小数据没有问题,对于大数据,性能就不行了
    
    最高效的查询方法【这个方法有点一直半解释,希望大神给予解析说明,谢谢!】
    
    $data =Xiaoke::when($live,function ($query){ 
                $query->join( 
                    DB::raw("(SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `xiaokes`)-(SELECT MIN(id) FROM `xiaokes`))+(SELECT MIN(id) FROM `xiaokes`)) AS xid) as t2"), 
                    'xiaokes.id', '>=', 't2.xid' 
                ); 
            }); 
               ->take(3)->get(); 

    参考:

    https://blog.csdn.net/tongtongsong/article/details/88050222

  • 相关阅读:
    最短路算法模板SPFA、disjkstra、Floyd
    数组排序
    java数组之二分法查找
    笔算开平方-20171211
    JSP+Servlet+DAO+Javabean模式小记-20171029
    java中创建List<>类型的数组-20171028
    Android及java中list循环添加时覆盖的问题-20171021
    Java-20180412
    centos 7.2 安装gitlab汉化
    docker 容器配置tocmat时间不统一
  • 原文地址:https://www.cnblogs.com/sien6/p/13917222.html
Copyright © 2011-2022 走看看